LeetCode 第 371 题 (Sum of Two Integers)
Posted liyuanbhu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 第 371 题 (Sum of Two Integers)相关的知识,希望对你有一定的参考价值。
LeetCode 第 371 题 (Sum of Two Integers)
Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.
Example:
Given a = 1 and b = 2, return 3.
不用加减法计算两个整数的和。这道题其实是考察一些基本的布尔代数知识。我们知道,二进制表示时:
0 + 0 = 00
1 + 0 = 01
0 + 1 = 01
1 + 1 = 10
所以,两个二进制整数
所以有如下关系:
如果
设
那么有
并且
这个过程再进行一遍:
那么有:
并且
那么,只要
这个过程很容易写成递归程序:
int getSum(int a, int b)
{
if(a == 0) return b;
int x = a ^ b;
int c = (a & b) << 1;
return getSum(c, x);
}
当然,也可以用也可以不用递归:
int getSum2(int a, int b)
{
while(a)
{
int x = a ^ b;
a = (a & b) << 1;
b = x;
}
return b;
}
以上是关于LeetCode 第 371 题 (Sum of Two Integers)的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 371. Sum of Two Integers
LeetCode(371) Sum of Two Integers
Leetcode - 371. Sum of Two Integers
leetcode-371-Sum of Two Integers