【LintCode-1】A + B 问题(Java实现)

【LintCode-1】A + B 问题(Java实现)_第1张图片
第一次代码记录:

  public int aplusb(int a, int b) {
    int carry=0;
    int sum =0;
    while(true){
        sum=a^b;//异或,相同为0,不同为1
        //1.且运算,当且仅当都为1时,为1,其余为0;
        // 2.左进1位,例如 0010,进位后,0100;
        carry=(a&b)<<1;
        if(carry==0){
            break;
        }else{
            a=sum;
            b=carry;
        }
    }
    return sum;
    }

第二次代码记录:

        public int aplusb(int a, int b) {
        int sum=0;
        int carry=1;
        while(carry!=0){
            sum=a^b;
            carry=(a&b)<<1;
            a=sum;
            b=carry;
        }
        return sum;
    }

个人解题思路:
因为传入的参数与返回的参数 均是整型,可以直接使用异或(^)与且(&)运算,这里只需要我们考虑进位(carry)情况即可。

如果您有更好的解法,欢迎您在留言区补充,感谢!!

你可能感兴趣的:(数据结构,数据结构与算法,java,位运算符,LintCode)