NC258. 不用加减乘除做加法
描述
示例1
输入:
1,2
输出:
3
示例2
输入:
0,0
输出:
0
C++ 解法, 执行用时: 2ms, 内存消耗: 356KB, 提交时间: 2021-05-12
class Solution { public: int Add(int num1, int num2) { while (num2) { int temp = num1^num2; num2 = (num1&num2)<<1; num1 = temp; } return num1; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 356KB, 提交时间: 2021-04-30
class Solution { public: int Add(int num1, int num2) { while(num2!=0){ int temp=num1^num2; //二进制的加,不考虑进位 num2=(num1&num2)<<1; //二进制的与左移会产生出现进位 //如果这个每位为0则说明没有进位,则最终结果就是异或的值 //进位与异或相加则为结果,又回到了两个数相加的过程,重复上述步骤直到进位值为0 num1=temp; } return num1; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 356KB, 提交时间: 2021-04-02
class Solution { public: int Add(int num1, int num2) { int result=0; int carry=0; do{ result=num1^num2; carry=(num1&num2)<<1; num1=result; num2=carry; }while(carry!=0); return result; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 356KB, 提交时间: 2021-03-04
class Solution { public: int Add(int num1, int num2) { int sum=0; int carry=0; do{ sum = num1^num2; //不进位 carry = (num1&num2)<<1; //进位 num1=sum; num2=carry; }while(num2!=0); return sum; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 356KB, 提交时间: 2021-02-21
class Solution { public: int Add(int num1, int num2) { int num,c; do { num=num1^num2; c=(num1&num2)<<1; num1=num; num2=c; } while(c!=0); return num; } };