首页 > 学院 > 开发设计 > 正文

【Leetcode】371. Sum of Two Integers

2019-11-06 09:06:27
字体:
来源:转载
供稿:网友

思路:

(1)按照位把ab相加,不考虑进位,结果是 a xor b,即1+1 =0 0+0 = 0 1+0=1,进位的请看下面。

(2)计算ab的进位的话,只有二者同为1才进位,因此进位可以标示为 (a and b) << 1 ,注意因为是进位,所以需要向左移动1位 

(3)于是a+b可以看成 (a xor b)+ ((a and b) << 1),这时候如果 (a and b) << 1 不为0,就递归调用这个方式吧,因为(a xor b)+ ((a and b) << 1) 也有可能进位,所以我们需要不断的处理进位。

public class Solution {    public int getSum(int a, int b) {        int result = a ^ b;        int temp = (a & b) << 1;        if (temp != 0)        	return getSum(result,temp);        return result;    }}

Runtime:0ms


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表