您的位置:首页 > 编程语言 > Java开发

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

2017-11-05 15:47 274 查看


第一次代码记录:

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)情况即可。

如果您有更好的解法,欢迎您在留言区补充,感谢!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: