• Leetcode练习(Python):第371题:两整数之和:不使用运算符 + 和


    题目:

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

    示例 1:

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

    示例 2:

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

    思路:

    汗,使用异或来实现,但是在Python得进行特殊处理。参考了一下别人的思路,https://github.com/Rosevil1874/LeetCode-Solution-Python-Java/tree/master/Python-Solution/371_Sum_of_Two_Integers

    程序:

    class Solution:
        def getSum(self, a: int, b: int) -> int:
            MAX = 0x7FFFFFFF    # 32bit 最大正整数
            MIN = 0x80000000    # 32bit 最小负整数
            mask = 0xFFFFFFFF   # 掩码:得到一个二进制数最后32位
            
            while b:
                # 加法不带进位的结果,进位
                a, b = (a ^ b) & mask, ((a & b) << 1) & mask
            
            # a <= MAX: a为正数,直接返回
            # a > MAX:a为负数,计算机存储补码,a ^ mask得到a的按位取反,~得到相反数-1。
            return a if a < MAX else ~(a ^ mask)
    

      

  • 相关阅读:
    MySQL的语句执行顺序
    mysql 基本使用
    spring 事务详解
    java 设计模式
    hibernate 简单查询
    qwq(一些有趣的数学题)
    关于libra9z
    HDU6756 Finding a MEX
    CF1386C Joker
    CF1340F Nastya and CBS
  • 原文地址:https://www.cnblogs.com/zhuozige/p/13023631.html
Copyright © 2020-2023  润新知