多數元素
哈希表解法:
class Solution {
public:/*int majorityElement(vector<int>& nums) {//map記錄元素出現的次數,遍歷map,求出出現次數最多的元素unordered_map<int,int>map;for(int i=0;i<nums.size();i++){map[nums[i]]++;}int max=0;int result=0;for(auto iterator=map.begin();iterator!=map.end();iterator++){if(iterator->second>max){max=iterator->second;result=iterator->first;}}return result;}*/int majorityElement(vector<int>& nums) {//map記錄元素出現的次數,遍歷map,求出出現次數最多的元素unordered_map<int,int>map;int max=0;int result=0;for(int i=0;i<nums.size();i++){map[nums[i]]++;if(map[nums[i]]>max){max=map[nums[i]];result=nums[i];}}return result;}
};
效率更高的解法:
class Solution {
public:int majorityElement(vector<int>& nums) {//因為多數元素出現次數大于n/2,所以多數元素與非多數元素次數相消還是多數元素,類比正負電子(labuladong題解解釋)int count=0;int target=0;for(int i=0;i<nums.size();i++){if(count==0){target=nums[i];count++;}else {if(nums[i]==target){count++;}else if(nums[i]!=target){count--;}}}return target;}
};