不用加减乘除做加法
思路1:第一步首先对两个数做异或操作(相同为0,不同为1),第二步计算进位,如果有进位,那就左移一位,和第一步所得的数继续做异或操作,直至进位为0;
class Solution {
public:
int Add(int num1, int num2)
{
int temp;
while(num2)
{
temp=num1^num2; //异或相同为0,不同为1
num2=(num1&num2)<<1; //计算进位
num1=temp;
}
return num1;
}
};
思路2:既然不能运用四则运算,那就自增自减,分为两种情况,num1>0和num1<0(为什么我觉得这种方法有点投机取巧)
class Solution {
public:
int Add(int num1, int num2)
{
//既然不能用四则运算,那就自增自减
if(num1>0)
{
while(num1--!=0)
{
num2++;
}
}
else if(num1<0)
{
while(num1++!=0)
{
num2--;
}
}
return num2;
}
};