题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用 +、-、×、÷ 四则运算符号。
样例
输入:num1 = 1 , num2 = 2
输出:3
算法1
(寻常做法) $O(1)$
时间复杂度
参考文献
C++ 代码
class Solution {
public:
int add(int num1, int num2){
return num1+num2;
}
};
算法2
(不用加减乘除) $O(1)$
时间复杂度
最多执行32次
参考文献
主要运用了异或和与代替达到加法的目的
异或是不进位加法,相当于两个数相加%2
与是算进位,只有两者同时为1时才能进位,并将结果左移一位
是将两个数字完全异或和与运算之后更新
C++ 代码
class Solution {
public:
int add(int num1, int num2){
while(num2)
{
//sum记存不进位加法
int sum=num1^num2;
//carry记存进位
int carry=(num1&num2)<<1;
//更新sum和carry
num1=sum;
num2=carry;
}
return num1;
}
};