Majority Element II
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋
times. The algorithm should run in linear time and in O(1) space.
Hint:
- How many majority elements could it possibly have?
- Do you have a better hint? Suggest it!
1 class Solution { 2 public: 3 vector<int> majorityElement(vector<int>& nums) { 4 int i; 5 int count1,count2; 6 int num1,num2; 7 int n=nums.size(); 8 vector<int> res; 9 count1=0; 10 count2=0; 11 for(i=0;i<n;i++){ 12 if(count1==0 || num1==nums[i]){ 13 num1=nums[i]; 14 count1++; 15 } 16 else if(count2==0 || num2==nums[i]){ 17 num2=nums[i]; 18 count2++; 19 } 20 else 21 { 22 count1--; 23 count2--; 24 } 25 } 26 count1=0; 27 count2=0; 28 for(i=0;i<n;i++) 29 { 30 if(num1==nums[i]) 31 count1++; 32 else if(num2==nums[i]) 33 count2++; 34 35 } 36 if(count1>n/3) 37 res.push_back(num1); 38 if(count2>n/3) 39 res.push_back(num2); 40 return res; 41 } 42 };
联系方式:emhhbmdfbGlhbmcxOTkxQDEyNi5jb20=