当前位置:   article > 正文

LeetCode371:两整数之和_a+b长整数leetcode

a+b长整数leetcode

原文来自于链接https://nickhuang1996.blog.csdn.net/article/details/110234605

目录

一、题目内容

二、解题思路

三、代码


一、题目内容

不使用运算符 + 和 - ,计算两整数 a 、b 之和。

示例 1:

输入: a = 1, b = 2
输出: 3

示例 2:

输入: a = -2, b = 3
输出: 1

二、解题思路

1.按位异或代表相加,但是对于1+1=10的情况并不能显示进位,因此需要按位与来得到进位值,但是1&1=1在低位,因此需要左移一位变为10,再将这个左移一位后的进位数与按位异或得到数再进行按位异或,得到新的相加值,同样的这个值没有进位,因此还需要将左移进位的进位数和按位异或的数同样进行按位与得到新的进位,并同样需要左移一位得到新的进位,如此反复;

2.注意显示范围

三、代码

  1. class Solution:
  2. def getSum(self, a: int, b: int) -> int:
  3. t = (a ^ b) & 0xFFFFFFFF
  4. f = (a & b) << 1
  5. if f != 0:
  6. return self.getSum(t, f)
  7. return t if t >> 31 == 0 else t - 0x100000000
  8. if __name__ == '__main__':
  9. a = 3
  10. b = 5
  11. s = Solution()
  12. ans = s.getSum(a, b)
  13. print(ans)

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/175499
推荐阅读
相关标签
  

闽ICP备14008679号