easy难度,倒是没啥难度,只是有点意思
a+b不能用+,-符号
思路就是按位算吧,举个例子
a = 20, b = 30
二进制表示
a = 10100
b = 11110
不考虑进位的话
a = 10100
b = 11110
----------
01010
需要进位的地方 10100
那么,理论上我们自己做加法还要加上进位的,这里需要把进位左移一位,然后继续做加法,直到没有进位
class Solution {
public:
int getSum(int a, int b) {
int remain = a & b;
int sum = a ^ b;
while (remain) {
int r = (sum & (remain << 1));
sum = sum ^ (remain << 1);
remain = r;
}
return sum;
}
};