LeetCode

来源:互联网 发布:淘宝口红代购知乎 编辑:程序博客网 时间:2024/06/03 21:00

题目链接:371. Sum of Two Integers


题意:给你两个整数ab,请你不使用+-求出两个数的和。


题意很明确,但是不使用+-进行求和,确实是让我一脸懵逼,所以我取了巧。

class Solution(object):    def getSum(self, a, b):        return sum([a, b])

哈哈哈,虽然没看过sum()函数的源码,但也能猜到sum()函数的本质还是使用+求和的。


分割线来展示一下大神的解法,不过看不太懂,当然这是使用Python书写的原因导致的问题,如果是使用javac++等这一类语言就不会有这种困扰了。
具体内容看这里。

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写的代码。
纯文字介绍版。
如果有朋友不喜欢纯文字的介绍,这里再贴一个纯图流(公式推导)。
纯图流介绍版。

这里这是为了对称,所以这么写,具体内容请看博客。

以上。

原创粉丝点击