Skip to content

Commit bfe0515

Browse files
committed
feat: add python and java solutions to lcof problem
添加《剑指 Offer》题解:面试题56 - II. 数组中数字出现的次数 II
1 parent 0297b2a commit bfe0515

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# [面试题56 - II. 数组中数字出现的次数 II](https://leetcode-cn.com/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-ii-lcof/)
2+
3+
## 题目描述
4+
在一个数组 `nums` 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。
5+
6+
**示例 1:**
7+
8+
```
9+
输入:nums = [3,4,3,3]
10+
输出:4
11+
```
12+
13+
**示例 2:**
14+
15+
```
16+
输入:nums = [9,1,7,9,7,9,7]
17+
输出:1
18+
```
19+
20+
**限制:**
21+
22+
- `1 <= nums.length <= 10000`
23+
- `1 <= nums[i] < 2^31`
24+
25+
## 解法
26+
### Python3
27+
```python
28+
class Solution:
29+
def singleNumber(self, nums: List[int]) -> int:
30+
bits = [0 for _ in range(32)]
31+
for num in nums:
32+
for i in range(32):
33+
bits[i] += (num & 1)
34+
num >>= 1
35+
36+
res = 0
37+
for i in range(32):
38+
if bits[i] % 3 == 1:
39+
res += pow(2, i)
40+
return res
41+
```
42+
43+
### Java
44+
```java
45+
class Solution {
46+
public int singleNumber(int[] nums) {
47+
int[] bits = new int[32];
48+
for (int num : nums) {
49+
for (int i = 0; i < 32; ++i) {
50+
bits[i] += (num & 1);
51+
num >>= 1;
52+
}
53+
}
54+
int res = 0;
55+
for (int i = 0; i < 32; ++i) {
56+
if (bits[i] % 3 == 1) {
57+
res += (int) Math.pow(2, i);
58+
}
59+
}
60+
return res;
61+
}
62+
}
63+
```
64+
65+
### ...
66+
```
67+
68+
```
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
public int singleNumber(int[] nums) {
3+
int[] bits = new int[32];
4+
for (int num : nums) {
5+
for (int i = 0; i < 32; ++i) {
6+
bits[i] += (num & 1);
7+
num >>= 1;
8+
}
9+
}
10+
int res = 0;
11+
for (int i = 0; i < 32; ++i) {
12+
if (bits[i] % 3 == 1) {
13+
res += (int) Math.pow(2, i);
14+
}
15+
}
16+
return res;
17+
}
18+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution:
2+
def singleNumber(self, nums: List[int]) -> int:
3+
bits = [0 for _ in range(32)]
4+
for num in nums:
5+
for i in range(32):
6+
bits[i] += (num & 1)
7+
num >>= 1
8+
9+
res = 0
10+
for i in range(32):
11+
if bits[i] % 3 == 1:
12+
res += pow(2, i)
13+
return res

0 commit comments

Comments
 (0)