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.
Credits: Special thanks to @fujiaozhu for adding this problem and
creating all test cases.
自己的答案,0ms:
public class Solution {
public int getSum(int a, int b) {
if (b == 0) {
return a;
}
int xor = a ^ b;
int and = (a & b) << 1;
return getSum(xor, and);
}
}
最快的答案,0ms:
public class Solution {
public int getSum(int a, int b) {
while (b != 0){
int carry = a & b; // common bits of a and b
a = a ^ b; // sum
b = carry << 1; // shift one bit to the left
}
return a;
}
}
A summary: how to use bit manipulation to solve problems easily and efficiently