Skip to content

Commit e22340c

Browse files
committed
solve problem Single Number III
1 parent f56df48 commit e22340c

File tree

5 files changed

+70
-0
lines changed

5 files changed

+70
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ All solutions will be accepted!
4040
|283|[Move Zeroes](https://leetcode-cn.com/problems/move-zeroes/description/)|[java/py/js](./algorithms/MoveZeroes)|Easy|
4141
|136|[Single Number](https://leetcode-cn.com/problems/single-number/description/)|[java/py/js](./algorithms/SingleNumber)|Easy|
4242
|137|[Single Number II](https://leetcode-cn.com/problems/single-number-ii/description/)|[java/py/js](./algorithms/SingleNumberII)|Medium|
43+
|260|[Single Number III](https://leetcode-cn.com/problems/single-number-iii/description/)|[java/py/js](./algorithms/SingleNumberIII)|Medium|
4344
|1|[Two Sum](https://leetcode-cn.com/problems/two-sum/description/)|[java/py/js](./algorithms/TwoSum)|Easy|
4445
|167|[Two Sum II Input Array Is Sorted](https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/description/)|[java/py/js](./algorithms/TwoSumIIInputArrayIsSorted)|Easy|
4546
|653|[Two Sum IV Input Is A Bst](https://leetcode-cn.com/problems/two-sum-iv-input-is-a-bst/description/)|[java/py/js](./algorithms/TwoSumIVInputIsABst)|Easy|

algorithms/SingleNumberIII/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Single Number III
2+
We can solve problem by bitwise, see [https://blog.csdn.net/qq_35546040/article/details/80284079](https://blog.csdn.net/qq_35546040/article/details/80284079)
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution {
2+
public int[] singleNumber(int[] nums) {
3+
int temp = 0,
4+
res0 = 0,
5+
res1 = 0;
6+
7+
for (int num : nums) {
8+
temp ^= num;
9+
}
10+
int v = temp & -temp;
11+
12+
for (int num : nums) {
13+
if ((v & num) == v) {
14+
res0 ^= num;
15+
} else {
16+
res1 ^= num;
17+
}
18+
}
19+
20+
return new int[]{res0, res1};
21+
}
22+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number[]}
4+
*/
5+
var singleNumber = function(nums) {
6+
let temp = res0 = res1 = 0
7+
8+
nums.forEach(num => temp ^= num)
9+
10+
let v = temp & ~ (temp - 1)
11+
12+
nums.forEach(num => {
13+
if ((v & num) === v) {
14+
res0 ^= num
15+
} else {
16+
res1 ^= num
17+
}
18+
})
19+
20+
return [res0, res1]
21+
};
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Solution(object):
2+
def singleNumber(self, nums):
3+
"""
4+
:type nums: List[int]
5+
:rtype: List[int]
6+
"""
7+
temp = 0
8+
9+
for num in nums:
10+
temp ^= num
11+
12+
# find the value of last 1
13+
# or this: v = temp & ~ (tmep - 1)
14+
v = temp & -temp
15+
16+
res_0 = 0
17+
res_1 = 0
18+
for num in nums:
19+
if v & num == v:
20+
res_0 ^= num
21+
else:
22+
res_1 ^= num
23+
24+
return [res_0, res_1]

0 commit comments

Comments
 (0)