题意:给你两个整数a
和b
,请你不使用+
和-
求出两个数的和。
题意很明确,但是不使用+
和-
进行求和,确实是让我一脸懵逼,所以我取了巧。
class Solution(object):
def getSum(self, a, b):
return sum([a, b])
哈哈哈,虽然没看过sum()
函数的源码,但也能猜到sum()
函数的本质还是使用+
求和的。
分割线来展示一下大神的解法,不过看不太懂,当然这是使用Python
书写的原因导致的问题,如果是使用java
、c++
等这一类语言就不会有这种困扰了。
具体内容看这里。
class Solution(object):
def getSum(self, a, b):
MAX_INT = 0x7FFFFFFF
MIN_INT = 0x80000000
MASK = 0x100000000
while b:
a, b = (a ^ b) % MASK, ((a & b) << 1) % MASK
return a if a <= MAX_INT else ~((a % MIN_INT) ^ MAX_INT)
最后贴一遍,我个人觉得讲解还算清楚的博客地址,这位博主是使用java
写的代码。
纯文字介绍版。
如果有朋友不喜欢纯文字的介绍,这里再贴一个纯图流(公式推导)。
纯图流介绍版。
这里这是为了对称,所以这么写,具体内容请看博客。
以上。