Description
Given two integers num1
and num2
, return the sum of the two integers.
Example 1:
Input: num1 = 12, num2 = 5
Output: 17
Explanation: num1 is 12, num2 is 5, and their sum is 12 + 5 = 17, so 17 is returned.
Example 2:
Input: num1 = -10, num2 = 4
Output: -6
Explanation: num1 + num2 = -6, so -6 is returned.
Constraints:
-100 <= num1, num2 <= 100
Solutions
Solution 1
Solution 2
| class Solution:
def sum(self, num1: int, num2: int) -> int:
num1, num2 = num1 & 0xFFFFFFFF, num2 & 0xFFFFFFFF
while num2:
carry = ((num1 & num2) << 1) & 0xFFFFFFFF
num1, num2 = num1 ^ num2, carry
return num1 if num1 < 0x80000000 else ~(num1 ^ 0xFFFFFFFF)
|
| class Solution {
public int sum(int num1, int num2) {
while (num2 != 0) {
int carry = (num1 & num2) << 1;
num1 ^= num2;
num2 = carry;
}
return num1;
}
}
|
| class Solution {
public:
int sum(int num1, int num2) {
while (num2) {
unsigned int carry = (unsigned int) (num1 & num2) << 1;
num1 ^= num2;
num2 = carry;
}
return num1;
}
};
|
| func sum(num1 int, num2 int) int {
for num2 != 0 {
carry := (num1 & num2) << 1
num1 ^= num2
num2 = carry
}
return num1
}
|
| function sum(num1: number, num2: number): number {
while (num2) {
const carry = (num1 & num2) << 1;
num1 ^= num2;
num2 = carry;
}
return num1;
}
|
1
2
3
4
5
6
7
8
9
10
11
12 | impl Solution {
pub fn sum(num1: i32, num2: i32) -> i32 {
let mut num1 = num1;
let mut num2 = num2;
while num2 != 0 {
let carry = (num1 & num2) << 1;
num1 ^= num2;
num2 = carry;
}
num1
}
}
|