首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

LeetCode 371.Sum of Two Integers

简单题。

这一题是不准用来计算两个整数之和。

很容易想到是用位运算来做。

a和b之和包括两个部分,一个部分是a或b在某一位上有一个为1,这部分可以用a^b取出来。另一部分是a或b在某一位上都为1,这部分可以用(a&b)

所以重复这个操作直至b为0然后返回a即可。代码如下(Python整数要自己取mask不然会max recursion exceed):

classSolution:

defgetSum(self,a,b):

# 32 bits 最大整数

MAX=0x7FFFFFFF

# 32 bits 最小整数

MIN=0x80000000

# 取最小32位的mask

mask=0xFFFFFFFF

# 循环至无进位

whileb!=:

# “异或”来获得和为1的位,“与”来获得要进位的位,向左移一位即可。总和为两者之和

a,b= (a^b)&mask, ((a&b)

# 如果a是负数,需要用mask将高位置为0

returnaifa

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180327G1D77100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券