【牛客题解】 ——不用加减乘除做加法

不用加减乘除做加法

【牛客题解】 ——不用加减乘除做加法_第1张图片
思路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;
    }
};

你可能感兴趣的:(C++,牛客力扣习题分析)