栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

力扣每日一题2021-09-26两整数之和

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

力扣每日一题2021-09-26两整数之和

题目描述

两整数之和

思路 位运算

根据题目要求不得使用 、-运算符 所以采用位运算来代替。位运算中的两数加法 其实就四种

0 0 0
0 1 1
1 0 1
1 1 0(进位1)

其实与异或运算结果十分相似 唯一的区别在于异或运算没有进位加法。因此要得到最终结果 还需要找到进位的数 把这二者相加。在位运算中 可以使用与操作获得进位 但是这时需要将与运算的结果左移一位 才是所要的进位结果。
因为在python中 整数不是32位的 所以一直循环左移不会存在溢出的现象 需要手动对python中的整数进行处理 手动模拟32位整型。具体来说 就是将整数对0x100000000取模 保证该数从32位开始到最高位都是0。

class Solution:
 def getSum(self, a: int, b: int) - int:
 # 2**32
 MASK 0x100000000
 # 整型最大值
 MAX_INT 0x7FFFFFFF
 MIN_INT MAX_INT 1
 while b ! 0:
 # 计算进位
 carry (a b) 1
 # 取余范围限制在[0, 2**32-1]范围内
 a (a ^ b) % MASK
 b carry % MASK
 return a if a MAX_INT else ~((a % MIN_INT) ^ MAX_INT)
 # return sum([a, b])

当然 也可以用sum()方法求解。
return sum([a, b])

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267977.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号