Skip to content

Latest commit

 

History

History
40 lines (36 loc) · 645 Bytes

File metadata and controls

40 lines (36 loc) · 645 Bytes
  • 因为目标元素占数组一半以上,因此可以让任意不相同的两个数抵消,最后剩余的必然是目标元素
[2, 2, 1, 1, 1, 2, 2]
2211 抵消
[1, 2, 2]
12 抵消
[2]
2 即为答案

[2, 3, 1, 4, 1, 1, 1, 1]
23 抵消
[1, 4, 1, 1, 1, 1]
14 抵消
[1, 1, 1, 1]
1 即为答案
  • 实现如下
class Solution {
 public:
  int majorityElement(vector<int>& nums) {
    int cnt = 0;
    int res = INT_MIN;
    for (auto& x : nums) {
      if (cnt == 0) {
        res = x;
      }
      if (res == x) {
        ++cnt;
      } else {
        --cnt;
      }
    }
    return res;
  }
};