美文网首页
[leetcode]Sum of Two Integers

[leetcode]Sum of Two Integers

作者: 无聊的学习中 | 来源:发表于2016-06-30 23:04 被阅读0次

easy难度,倒是没啥难度,只是有点意思

a+b不能用+,-符号

思路就是按位算吧,举个例子

a = 20, b = 30
二进制表示
a = 10100
b = 11110
不考虑进位的话 
                       a = 10100
                       b = 11110
                      ----------
                           01010
需要进位的地方              10100
那么,理论上我们自己做加法还要加上进位的,这里需要把进位左移一位,然后继续做加法,直到没有进位
class Solution {
public:
    int getSum(int a, int b) {
        int remain = a & b;
        int sum = a ^ b;
        while (remain) {
            int r = (sum & (remain << 1));
            sum = sum ^ (remain << 1);
            remain = r;
        }
        return sum;
    }
};

相关文章

网友评论

      本文标题:[leetcode]Sum of Two Integers

      本文链接:https://www.haomeiwen.com/subject/ipdfjttx.html