为了账号安全,请及时绑定邮箱和手机立即绑定

python 解决lintcode a+b 超时问题

python 解决lintcode a+b 超时问题

偶然的你 2019-02-05 13:13:38
题目描述lintcode a+b 问题题目来源及自己的思路https://www.lintcode.com/prob...代码def aplusb(self, a, b):     # write your code here     while True:         a, b = a^b, (a&b)<<1         if a==0 or b == 0:            return a or b当 a=-b 时 为什么代码会超时, 而同样的逻辑,用Java就不会超时  public int aplusb(int a ,int b) {        // write your code here, try to do it without arithmetic operators.         while(true){        int x = a^b;  //记录不进位数         int y = (a&b)<<1;  //记录进位数         if(x==0){            return y;         }        if (y==0){            return x;         }         a=x;         b=y;         } // while                      }
查看完整描述

1 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

1.计算a^b(以+5、-5为例)

a-a进行异或操作
得到1111 1110
也就是-2

计算过程:
5(0000 0101)-5(1111 1011)为例
异或运算得到1111 1110
1111 1110 减去 1 得到 1111 1101
1111 1101 取反码 0000 0010 得到 2
2再加上原来的负号 就是 -2


查看完整回答
反对 回复 2019-02-19
  • 1 回答
  • 0 关注
  • 535 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信