算法1
(异或) $O(n)$
-
因为1+0和0+1都是1,1+1和0+0都是0,和异或一样
-
不同的是1+1有进位,所以,用&操作,来求进位
-
得到是否有进位之后,将进位向左边移1位与之前异或求的的值进行异或
-
循环直至没有进位
Java 代码
class Solution {
public int add(int num1, int num2) {
int sum = 0,carry = 0;
do{
sum = num1^num2;
carry = (num1 & num2)<<1;
num1 = sum;
num2 = carry;
}while(num2!=0);
return num1;
}
}