C++刷leetcode(面试题 17.01. 不用加号的加法)【位运算】
本帖最后由 糖逗 于 2020-5-8 17:19 编辑题目描述:
设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。
示例:
输入: a = 1, b = 1
输出: 2
提示:
a, b 均可能是负数或 0
结果不会溢出 32 位整数
class Solution {
public:
int add(int a, int b) {
unsigned intsum = 0, carry = 0;
while(b != 0) {
sum = a ^ b;
carry = (unsigned int)(a & b) << 1; //负数情况
a = sum;
b = carry;
}
return a;
}
};
参考链接:https://leetcode-cn.com/problems/add-without-plus-lcci/solution/leetcode_17_01_bu-yong-jia-hao-de-jia-fa-by-cengsi/
页:
[1]