Skip to content

Commit 3e3c7c9

Browse files
solves single number iii
1 parent 5d901e4 commit 3e3c7c9

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

src/SingleNumberIII.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// https://leetcode.com/problems/single-number-iii
2+
// T: O(N)
3+
// S: O(1)
4+
5+
public class SingleNumberIII {
6+
public int[] singleNumber(int[] nums) {
7+
// get xor of 2 unique numbers a ^ b
8+
int diff = getXor(nums);
9+
10+
diff = getLastSetBit(diff);
11+
12+
final int[] result = {0, 0};
13+
for (int element : nums) {
14+
// different set bit
15+
if ((element & diff) == 0) {
16+
result[0] ^= element;
17+
} else result[1] ^= element;
18+
}
19+
20+
return result;
21+
}
22+
23+
private int getXor(int[] array) {
24+
int diff = 0;
25+
for (int element : array) {
26+
diff ^= element;
27+
}
28+
return diff;
29+
}
30+
31+
private int getLastSetBit(int x) {
32+
return x & -x;
33+
}
34+
}

0 commit comments

Comments
 (0)