Add Without Plus:不使用加法完成加法运算。
根据手工计算加法的过程,先计算个位,再计算十位及个位的进位,以此类推,但是这个过程其实可以拆分:先计算不带进位的加法,然后将结果和只包含进位的数字再进行不带进位加法,以此类推得到最终的结果。
对于二进制,不带进位加法就是异或,只包含进位的加法就是与运算左移1位。
力扣上依旧会出现移位溢出崩溃的情形,难道移一下会死 😦😦😦
class Solution {
public:
int add(int a, int b) {
if(b == 0) return a;
int sum = a ^ b;
int carry = ((unsigned int)a & b) << 1;
return add(sum, carry);
}
};

被折叠的 条评论
为什么被折叠?



