LeetCode : Majority Element

来源:互联网 发布:淘宝购物车降价提醒 编辑:程序博客网 时间:2024/06/10 02:20

Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.

You may assume that the array is non-empty and the majority element always exist in the array.

class Solution {public:    int majorityElement(vector<int>& nums) {      map<int,int>m;      for(int i=0;i<nums.size();++i)      {          if(m.find(nums[i])==m.end())               m[nums[i]] = 1;           else               m[nums[i]]++;          if(m[nums[i]]>nums.size()/2)              return nums[i];      }      return 0;    }};//或者选举算法,时间复杂度是线性的int majorityElement(vector<int> &num) {    int majority;    int cnt = 0;    for(int i=0; i<num.size(); i++){        if ( cnt ==0 ){            majority = num[i];            cnt++;        }else{            majority == num[i] ? cnt++ : cnt --;            if (cnt >= num.size()/2+1) return majority;        }    }    return majority;}
0 0