剑指 Offer 65. 不用加减乘除做加法
思路:位运算
如何处理负数?
c++不支持负数的移位,需要加入转换为非负数后操作
class Solution {
public:
int add(int a, int b) {
unsigned int a1=a,b1=b;
while(b1>0){
unsigned temp=(a1&b1)<<1;
a1=a1^b1;
b1=temp;
}
return int(a1);
}
};
时间复杂度 O(1)
空间复杂度 O(1)