File tree Expand file tree Collapse file tree 1 file changed +59
-0
lines changed Expand file tree Collapse file tree 1 file changed +59
-0
lines changed Original file line number Diff line number Diff line change
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
+ ```
You can’t perform that action at this time.
0 commit comments