题目:
解答:
假设选择任意两个不相同的数做个消除操作,那么消除玩还剩下的数一定是答案。
(1)扫描一次数组,扫描的过程中记录 "当前数"curNum 和 "当前数的个数"count 。
(2)如果遇到不相同的数,则count减1,count减到0时,curNum换成扫描到的新数。
(3)扫描完一遍数组,最后的curNum就是答案。
1 class Solution { 2 public: 3 int majorityElement(vector<int>& nums) 4 { 5 int curNum = nums[0]; 6 int len = nums.size(); 7 8 int count = 1; 9 for (int i = 1; i < len; ++i) 10 { 11 if (count == 0) 12 { 13 curNum = nums[i]; 14 count = 1; 15 } 16 else 17 { 18 if (nums[i] != curNum) 19 { 20 count--; 21 } 22 else 23 { 24 count++; 25 } 26 } 27 } 28 29 return curNum; 30 } 31 };