Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 4d7d4fa

Browse files
committed
feat: update solutions to lc/lcof/lcci problem: Majority Element
1 parent b56d67f commit 4d7d4fa

File tree

22 files changed

+573
-100
lines changed

22 files changed

+573
-100
lines changed

‎README.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050

5151
### 数组
5252

53+
- [多数元素](./solution/0100-0199/0169.Majority%20Element/README.md)
5354
- [删除排序数组中的重复项](./solution/0000-0099/0026.Remove%20Duplicates%20from%20Sorted%20Array/README.md)
5455
- [删除排序数组中的重复项 II](./solution/0000-0099/0080.Remove%20Duplicates%20from%20Sorted%20Array%20II/README.md)
5556
- [移除元素](./solution/0000-0099/0027.Remove%20Element/README.md)

‎README_EN.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ Complete solutions to [LeetCode](https://leetcode-cn.com/problemset/all/), [LCOF
5050

5151
### Arrays
5252

53+
- [Majority Element](./solution/0100-0199/0169.Majority%20Element/README_EN.md)
5354
- [Remove Duplicates from Sorted Array](./solution/0000-0099/0026.Remove%20Duplicates%20from%20Sorted%20Array/README_EN.md)
5455
- [Remove Duplicates from Sorted Array II](./solution/0000-0099/0080.Remove%20Duplicates%20from%20Sorted%20Array%20II/README_EN.md)
5556
- [Remove Element](./solution/0000-0099/0027.Remove%20Element/README_EN.md)

‎lcci/17.10.Find Majority Element/README.md‎

Lines changed: 75 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535

3636
<!-- 这里可写通用的实现逻辑 -->
3737

38-
摩尔投票法
38+
摩尔投票法。时间复杂度 O(n),空间复杂度 O(1)。
3939

4040
<!-- tabs:start -->
4141

@@ -44,15 +44,37 @@
4444
<!-- 这里可写当前语言的特殊实现逻辑 -->
4545

4646
```python
47-
47+
class Solution:
48+
def majorityElement(self, nums: List[int]) -> int:
49+
cnt = major = 0
50+
for num in nums:
51+
if cnt == 0:
52+
major = num
53+
cnt = 1
54+
else:
55+
cnt += (1 if major == num else -1)
56+
return major
4857
```
4958

5059
### **Java**
5160

5261
<!-- 这里可写当前语言的特殊实现逻辑 -->
5362

5463
```java
55-
64+
class Solution {
65+
public int majorityElement(int[] nums) {
66+
int cnt = 0, major = 0;
67+
for (int num : nums) {
68+
if (cnt == 0) {
69+
major = num;
70+
cnt = 1;
71+
} else {
72+
cnt += (major == num ? 1 : -1);
73+
}
74+
}
75+
return major;
76+
}
77+
}
5678
```
5779

5880
### **JavaScript**
@@ -63,23 +85,63 @@
6385
* @return {number}
6486
*/
6587
var majorityElement = function(nums) {
66-
let candidate = 0, count = 0;
67-
for (let num of nums) {
68-
if (count == 0) candidate = num;
69-
if (candidate == num) {
70-
count++;
88+
let cnt = 0;
89+
let major = 0;
90+
for (const num of nums) {
91+
if (cnt == 0) {
92+
major = num;
93+
cnt = 1;
7194
} else {
72-
count--;
95+
cnt += (major == num ?1:-1);
7396
}
7497
}
75-
let n = 0;
76-
for (let num of nums) {
77-
if (candidate == num) n++;
98+
return major;
99+
};
100+
```
101+
102+
### **C++**
103+
104+
```cpp
105+
class Solution {
106+
public:
107+
int majorityElement(vector<int>& nums) {
108+
int cnt = 0, major = 0;
109+
for (int num : nums) {
110+
if (cnt == 0) {
111+
major = num;
112+
cnt = 1;
113+
} else {
114+
cnt += (major == num ? 1 : -1);
115+
}
116+
}
117+
return major;
78118
}
79-
return n > (nums.length / 2) ? candidate : -1;
80119
};
81120
```
82121
122+
### **C#**
123+
124+
```cs
125+
public class Solution {
126+
public int MajorityElement(int[] nums) {
127+
int cnt = 0, major = 0;
128+
foreach (int num in nums)
129+
{
130+
if (cnt == 0)
131+
{
132+
major = num;
133+
cnt = 1;
134+
}
135+
else
136+
{
137+
cnt += (major == num ? 1 : -1);
138+
}
139+
}
140+
return major;
141+
}
142+
}
143+
```
144+
83145
### **...**
84146

85147
```

‎lcci/17.10.Find Majority Element/README_EN.md‎

Lines changed: 74 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,35 @@ Boyer–Moore majority vote algorithm
4545
### **Python3**
4646

4747
```python
48-
48+
class Solution:
49+
def majorityElement(self, nums: List[int]) -> int:
50+
cnt = major = 0
51+
for num in nums:
52+
if cnt == 0:
53+
major = num
54+
cnt = 1
55+
else:
56+
cnt += (1 if major == num else -1)
57+
return major
4958
```
5059

5160
### **Java**
5261

5362
```java
54-
63+
class Solution {
64+
public int majorityElement(int[] nums) {
65+
int cnt = 0, major = 0;
66+
for (int num : nums) {
67+
if (cnt == 0) {
68+
major = num;
69+
cnt = 1;
70+
} else {
71+
cnt += (major == num ? 1 : -1);
72+
}
73+
}
74+
return major;
75+
}
76+
}
5577
```
5678

5779
### **JavaScript**
@@ -62,23 +84,63 @@ Boyer–Moore majority vote algorithm
6284
* @return {number}
6385
*/
6486
var majorityElement = function(nums) {
65-
let candidate = 0, count = 0;
66-
for (let num of nums) {
67-
if (count == 0) candidate = num;
68-
if (candidate == num) {
69-
count++;
87+
let cnt = 0;
88+
let major = 0;
89+
for (const num of nums) {
90+
if (cnt == 0) {
91+
major = num;
92+
cnt = 1;
7093
} else {
71-
count--;
94+
cnt += (major == num ?1:-1);
7295
}
7396
}
74-
let n = 0;
75-
for (let num of nums) {
76-
if (candidate == num) n++;
97+
return major;
98+
};
99+
```
100+
101+
### **C++**
102+
103+
```cpp
104+
class Solution {
105+
public:
106+
int majorityElement(vector<int>& nums) {
107+
int cnt = 0, major = 0;
108+
for (int num : nums) {
109+
if (cnt == 0) {
110+
major = num;
111+
cnt = 1;
112+
} else {
113+
cnt += (major == num ? 1 : -1);
114+
}
115+
}
116+
return major;
77117
}
78-
return n > (nums.length / 2) ? candidate : -1;
79118
};
80119
```
81120
121+
### **C#**
122+
123+
```cs
124+
public class Solution {
125+
public int MajorityElement(int[] nums) {
126+
int cnt = 0, major = 0;
127+
foreach (int num in nums)
128+
{
129+
if (cnt == 0)
130+
{
131+
major = num;
132+
cnt = 1;
133+
}
134+
else
135+
{
136+
cnt += (major == num ? 1 : -1);
137+
}
138+
}
139+
return major;
140+
}
141+
}
142+
```
143+
82144
### **...**
83145

84146
```
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution {
2+
public:
3+
int majorityElement(vector<int>& nums) {
4+
int cnt = 0, major = 0;
5+
for (int num : nums) {
6+
if (cnt == 0) {
7+
major = num;
8+
cnt = 1;
9+
} else {
10+
cnt += (major == num ? 1 : -1);
11+
}
12+
}
13+
return major;
14+
}
15+
};
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
public class Solution {
2+
public int MajorityElement(int[] nums) {
3+
int cnt = 0, major = 0;
4+
foreach (int num in nums)
5+
{
6+
if (cnt == 0)
7+
{
8+
major = num;
9+
cnt = 1;
10+
}
11+
else
12+
{
13+
cnt += (major == num ? 1 : -1);
14+
}
15+
}
16+
return major;
17+
}
18+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
func majorityElement(nums []int) int {
2+
var cnt, major int
3+
for _, num := range nums {
4+
if cnt == 0 {
5+
major = num
6+
cnt = 1
7+
} else {
8+
if major == num {
9+
cnt++
10+
} else {
11+
cnt--
12+
}
13+
}
14+
}
15+
return major
16+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public int majorityElement(int[] nums) {
3+
int cnt = 0, major = 0;
4+
for (int num : nums) {
5+
if (cnt == 0) {
6+
major = num;
7+
cnt = 1;
8+
} else {
9+
cnt += (major == num ? 1 : -1);
10+
}
11+
}
12+
return major;
13+
}
14+
}

‎lcci/17.10.Find Majority Element/Solution.js‎

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,15 @@
33
* @return {number}
44
*/
55
var majorityElement = function(nums) {
6-
let candidate = 0, count = 0;
7-
for (let num of nums) {
8-
if (count == 0) candidate = num;
9-
if (candidate == num) {
10-
count++;
6+
let cnt = 0;
7+
let major = 0;
8+
for (const num of nums) {
9+
if (cnt == 0) {
10+
major = num;
11+
cnt = 1;
1112
} else {
12-
count--;
13+
cnt+=(major==num ? 1 : -1);
1314
}
1415
}
15-
let n = 0;
16-
for (let num of nums) {
17-
if (candidate == num) n++;
18-
}
19-
return n > (nums.length / 2) ? candidate : -1;
16+
return major;
2017
};
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class Solution:
2+
def majorityElement(self, nums: List[int]) -> int:
3+
cnt = major = 0
4+
for num in nums:
5+
if cnt == 0:
6+
major = num
7+
cnt = 1
8+
else:
9+
cnt += (1 if major == num else -1)
10+
return major

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /