leetcode_371. 两整数之和

目录

一、题目内容

二、解题思路

三、代码


一、题目内容

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

示例 1:

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

示例 2:

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

二、解题思路

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

2.注意显示范围

三、代码

class Solution:
    def getSum(self, a: int, b: int) -> int:
        t = (a ^ b) & 0xFFFFFFFF
        f = (a & b) << 1
        if f != 0:
            return self.getSum(t, f)
        return t if t >> 31 == 0 else t - 0x100000000


if __name__ == '__main__':
    a = 3
    b = 5
    s = Solution()
    ans = s.getSum(a, b)
    print(ans)
悲恋花丶无心之人 CSDN认证博客专家 深度学习 神经网络 Pytorch
计算机视觉在读研究生,熟悉Pytorch,MXNet,TensorFlow,Keras等深度学习框架,主要涉及的领域有目标检测,语义分割,超分辨率重建,行人重识别等。
个人GitHub网址为:https://github.com/nickhuang1996
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付 29.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值