Leetcode371: Sum of Two Integers
2016-09-23 21:11
423 查看
371. Sum of Two Integers
Calculate the sum of two integers a and b, but you are not allowed to use the operator [code]+and
-.Example:Given a = 1 and b = 2, return 3.[/code]
题意: 计算两个整数的值,不能用加法和减法。
解答: 一开始的时候,我一直在思考怎么样将加法转化成为乘除法,嗯,是的,思维被限制在加减乘除上面了。开始的时候,想着将a,b化成2的指数,这样的话,a+b就成为了2^a*2^b的指数,然后通过log运算就可以得到a+b的值。 是的,在一般的情况下,这样做是可以的,但是因为题目给的a,b是int类型,所以取INT_MAX和INT_MIN的时候,作为2的指数并且还相乘就直接爆了,使用long long的类型都是不可以的。 然后,去搜索,发现了半加法的思想。就是对于两个二进制数,两个单独的位相加的结果是可以用异或得到的,而进位是可以用与得到的。
代码:
class Solution {public:int getSum(int a, int b) {while(b!=0){int carry=a&b;a=a^b;b=carry<<1;}return a;}};复杂度:O(n).
相关文章推荐
- leetcode 371 Sum of Two Integers C++
- [leetcode-371]Sum of Two Integers(java)
- leetcode 371 Sum of Two Integers
- [LeetCode-371]Sum of Two Integers(C)
- LeetCode-371-Sum of Two Integers
- Sum—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 (位运算)
- LeetCode-371-Sum of Two Integers-E
- leetcode 371 Sum of Two Integers java实现
- LeetCode 371:Sum of Two Integers
- leetcode371:Sum of Two Integers
- LeetCode 第 371 题 (Sum of Two Integers)
- leetcode-371-Sum of Two Integers
- leetcode:bits:Sum of Two Integers(371)
- LeetCode[371] Sum of Two Integers
- LeetCode371——Sum of Two Integers(不用+)
- Leetcode 371 :Sum of Two Integers