这个题貌似完全颠覆一般的Logic:交换两个整数需要一个额外的空间用于保存:
t = b;
b = a;
a  = t;
粗看上去似乎没有办法,但是仔细想一下,既然不能用额外的空间,那么能用的方法就只有数学方法,也许有效,那么第一个想法就是用A+b看看,稍微想一下就可以得到下面这个解法:
 a = a + b;
 b = a - b;
 a = a - b;
这种方法会有问题,a+b有可能溢出,但异或就不会有溢出问题。
 
还有更绝的(由DxZ网友提供):
a = a ^ b;
b = a ^ b;
a = a ^ b;
 
异或就是求同存异的过程,第一步得到a和b的不同,得到需要改变的位。

相关文章:

  • 2021-06-26
  • 2022-12-23
  • 2021-11-29
  • 2021-11-30
  • 2022-01-11
  • 2021-08-27
  • 2021-09-23
  • 2022-12-23
猜你喜欢
  • 2021-05-18
  • 2022-01-28
  • 2021-09-21
  • 2021-05-18
  • 2022-02-09
  • 2021-10-28
  • 2022-12-23
相关资源
相似解决方案