目录
力扣面试题 17.01. 不用加号的加法
设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。
示例:
输入: a = 1, b = 1 输出: 2
提示:
a
,b
均可能是负数或 0- 结果不会溢出 32 位整数
解析代码
本题的意思是自己实现加法,不适用现成的运算符,考察对于运算符的灵活运用。
class Solution {
public:
int add(int a, int b) {
while(b != 0)
{
int c = ((b & a) << 1); // 进位
a ^= b; // 无进位相加
b = c;
}
return a;
}
};
牛客另类加法
解析代码
class UnusualAdd {
public:
int addAB(int A, int B) {
while (B != 0)
{
int C = ((B & A) << 1); // 进位
A ^= B; // 无进位相加
B = C; // 直到进位不为0就跳出循环
}
return A;
}
};