【前言】
某日,去面试的时候遇到面试题,
交换a及b,不用第三个数,欸,当时没想到,也不知道这种经典面试题答案,现在查一下记录一下:
方法一:
a=a+b;
b=a-b;
a=a-b;
方法二:
a=a^b;
b=a^b;
a=a^b;
方法二是异或运算,请记住异或运算的规则----搞数学的就是按照各种规则各种公式再推各种规则。
1. a ^ a = 0
2. a ^ b = b ^ a
3. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;
4. d = a ^ b ^ c 可以推出 a = d ^ b ^ c.
5. a ^ b ^ a = b.
这种问题,用运算的时间换取内存空间,适用场景在哪里?