美文网首页
算法分享第3题

算法分享第3题

作者: DevWang | 来源:发表于2017-12-18 16:38 被阅读0次
题目:给定两个整数a和b,交换这两个数字,要求不引入第三个变量
如:定义a=1、b=2 交换后 a=2、b=1




















思路:

  • 要求不引入第三方变量,肯定要用到一些技巧;
  • 已知的常用技巧如加减法、位运算之类的先拿来试一试.

方法一:使用加减法实现

// A+B可能会越界 - 不推荐此方法,只领悟其思路
public void swap() {
    int a = 1;
    int b = 2;
    a = a + b;
    b = a - b;
    a = a - b;
}

方法二:使用位 异或运算 来实现

// 只能算是奇技淫巧,对速度的提升无帮助,可参考其他文章的解释,这里不过多阐述
public void swap() {
    int a = 1;
    int b = 2;
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
}

相关文章

网友评论

      本文标题:算法分享第3题

      本文链接:https://www.haomeiwen.com/subject/eeumwxtx.html