LeetCode371-两整数之和

题目链接

英文链接:https://leetcode.com/problems/sum-of-two-integers/

中文链接:https://leetcode-cn.com/problems/sum-of-two-integers/

题目详述

不使用运算符 +- ,计算两整数 ab 之和。

示例 1:

1
2
输入: a = 1, b = 2
输出: 3

示例 2:

1
2
输入: a = -2, b = 3
输出: 1

题目详解

  • 模拟竖式加法直至进位为 0。
  • a ^ b 是没有进位的和,(a & b) << 1 是进位。
1
2
3
4
5
6
public class LeetCode_00371 {

public int getSum(int a, int b) {
return b == 0 ? a : getSum(a ^ b, (a & b) << 1);
}
}

也可以改为迭代形式。

1
2
3
4
5
6
7
8
9
10
11
12
public class LeetCode_00371 {

public int getSum(int a, int b) {
while (b != 0) {
int t1 = a ^ b;
int t2 = (a & b) << 1;
a = t1;
b = t2;
}
return a;
}
}