LeetCode-371. 两整数之和

371. 两整数之和


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

示例 1:

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

示例 2:

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

解题思路:一,两整数之和可以表示为进位数与不进位和的和。进位数可以使用两者按位与且左移一位表示;不进位和可以使用两者按位异或表示。二,python对于负数的处理需要手动模拟32int。

Python3代码如下:

class Solution(object):
    def getSum(self, a, b):
        """
        :type a: int
        :type b: int
        :rtype: int
        """
        mask = 0xffffffff
        MIN = 0x80000000
        MAX = 0x7fffffff
        while b != 0:
            a,b = (a^b)&mask,((a&b)<<1)&mask
        # 当a > MAX时,a为负数。其绝对值表示为a按位取反再加1。即-(a^mask+1)
        return a if a<= MAX else ~(a^mask)

猜你喜欢

转载自blog.csdn.net/qq_36309480/article/details/89639198