Skip to content

Commit 0b4166e

Browse files
committed
169. 多数元素
1 parent 439bce9 commit 0b4166e

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

0169. 多数元素.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# 169. 多数元素
2+
3+
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
4+
5+
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
6+
7+
示例 1:
8+
9+
```js
10+
输入:[3,2,3]
11+
输出:3
12+
```
13+
14+
示例 2:
15+
16+
```js
17+
输入:[2,2,1,1,1,2,2]
18+
输出:2
19+
``` 
20+
21+
进阶:
22+
23+
尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。
24+
25+
来源:力扣(LeetCode)
26+
27+
链接:https://leetcode-cn.com/problems/majority-element
28+
29+
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
30+
31+
---
32+
33+
- 用 Map:空间复杂度不是 O(1)
34+
35+
- 可以先排序,之后取中间的
36+
37+
- 摩尔投票法
38+
39+
```js
40+
/**
41+
* @param {number[]} nums
42+
* @return {number}
43+
*/
44+
var majorityElement = function(nums) {
45+
let current = nums[0], count = 1
46+
for(let i = 1; i < nums.length; i ++) {
47+
if (nums[i] === current) {
48+
count ++
49+
} else {
50+
count --
51+
}
52+
if (count === -1) {
53+
current = nums[i]
54+
count = 1
55+
}
56+
}
57+
return current
58+
};
59+
```

0 commit comments

Comments
 (0)