题目
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷ 四则运算符号。
样例
输入:num1 = 1 , num2 = 2
输出:3
解法:位运算
1、两个整数做异或^,得到各位相加不进位的运算结果;
2、两个整数做与&,然后再左移一位,即得到进位的运算结果;
3、将上面两个结果相加,即重复步骤1,2,直至进位的运算结果为0;
时间复杂度O(logN),空间复杂度O(1)
class Solution {
public:
int add(int num1, int num2){
while (num2) {
int sum = num1 ^ num2;
int carry = (num1 & num2) << 1;
num1 = sum, num2 = carry;
}
return num1;
}
};