File tree 3 files changed +74
-0
lines changed
lcci/17.10.Find Majority Element
3 files changed +74
-0
lines changed Original file line number Diff line number Diff line change 35
35
36
36
<!-- 这里可写通用的实现逻辑 -->
37
37
38
+ 摩尔投票法
39
+
38
40
<!-- tabs:start -->
39
41
40
42
### ** Python3**
53
55
54
56
```
55
57
58
+ ### ** JavaScript**
59
+
60
+ ``` js
61
+ /**
62
+ * @param {number[]} nums
63
+ * @return {number}
64
+ */
65
+ 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++ ;
71
+ } else {
72
+ count-- ;
73
+ }
74
+ }
75
+ let n = 0 ;
76
+ for (let num of nums) {
77
+ if (candidate == num) n++ ;
78
+ }
79
+ return n > (nums .length / 2 ) ? candidate : - 1 ;
80
+ };
81
+ ```
82
+
56
83
### ** ...**
57
84
58
85
```
Original file line number Diff line number Diff line change 38
38
39
39
## Solutions
40
40
41
+ Boyer–Moore majority vote algorithm
42
+
41
43
<!-- tabs:start -->
42
44
43
45
### ** Python3**
52
54
53
55
```
54
56
57
+ ### ** JavaScript**
58
+
59
+ ``` js
60
+ /**
61
+ * @param {number[]} nums
62
+ * @return {number}
63
+ */
64
+ 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++ ;
70
+ } else {
71
+ count-- ;
72
+ }
73
+ }
74
+ let n = 0 ;
75
+ for (let num of nums) {
76
+ if (candidate == num) n++ ;
77
+ }
78
+ return n > (nums .length / 2 ) ? candidate : - 1 ;
79
+ };
80
+ ```
81
+
55
82
### ** ...**
56
83
57
84
```
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @return {number }
4
+ */
5
+ 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 ++ ;
11
+ } else {
12
+ count -- ;
13
+ }
14
+ }
15
+ let n = 0 ;
16
+ for ( let num of nums ) {
17
+ if ( candidate == num ) n ++ ;
18
+ }
19
+ return n > ( nums . length / 2 ) ? candidate : - 1 ;
20
+ } ;
You can’t perform that action at this time.
0 commit comments