forked from haoel/leetcode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
SumOfTwoIntegers.cpp
38 lines (33 loc) · 1.06 KB
/
SumOfTwoIntegers.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// Source : https://leetcode.com/problems/sum-of-two-integers/description/
// Author : Hao Chen
// Date : 2018-06-25
/***************************************************************************************
*
* 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.
*
*
* Credits:Special thanks to @fujiaozhu for adding this problem and creating all test
* cases.
***************************************************************************************/
class Solution {
public:
int getSum(int x, int y) {
// Iterate till there is no carry
while (y != 0) {
// carry now contains common
//set bits of x and y
int carry = x & y;
// Sum of bits of x and y where at
//least one of the bits is not set
x = x ^ y;
// Carry is shifted by one so that adding
// it to x gives the required sum
y = carry << 1;
}
return x;
}
};