Given an array of integers, the majority number is the number that occurs
more than half
of the size of the array. Find it.
Example
Given
[1, 1, 1, 1, 2, 2, 2]
, return 1
Challenge
Moore’s Voting Algorithm:
O(n) time and O(1) extra space
class Solution { public: int majorityNumber(vector<int> nums) { int len = nums.size(); if(0 == len) return 0; int maj = nums[0], count = 1; for(int i=1;i<len;i++) { if(nums[i] == maj) count ++; else count --; if(0 == count) { maj = nums[i]; count = 1; } } return maj; } };