leetcode解题系列(七)
继续坚持!
169、多数元素
题目描述:
最简单的方法可以先用一个数组保存前(n/2+1)元素的出现次数(多数元素一定出现),然后再求这个数组中的最大值对应的元素即可。
复杂度分析:时间O(n^2),空间O(n)
但是这样不能满足时间要求,进行了一定修改,只有元素第一次出现才count,否则就直接next,节省了很多时间。
代码如下:
class Solution {
public:
int majorityElement(vector<int>& nums) {
if(nums.size()<=2)return nums[0];
int i=nums.size()/2+2;
int res=0;
int mark=0;
vector<int>m;
for(int n=0;n<i;n++){
if(!count(m.begin(),m.end(),nums[n])){
if(count(nums.begin(),nums.end(),nums[n])>=i-1)return nums[n];
m