169. Majority Element

来源:互联网 发布:pid控制算法 编辑:程序博客网 时间:2024/06/05 10:23

1、题目描述

给一个长度为n的数组,返回它的主要元素。主要元素定义是出现次数超过n/2的元素。


2、思路

声明一个答案君ans,初始化为nums[0];

声明一个计数君cnt,初始化为1,他表示ans这个数字出现的次数。现在是1次。

遍历数组,若当前数字等于ans,则cnt加1,反之cnt减1;

当cnt等于0的时候,说明在之前的这些元素中,ans和其他元素的出现的次数刚好相等。

那么,在确保一定有主要元素的情况下,只需要从后面剩下的元素中找到主要元素即可。


3、代码

    int majorityElement(vector<int>& nums) {        int n = nums.size();        int ans = nums[0];        int cnt = 1;        for(int i=1;i<n;i++){            if(cnt==0){                ans=nums[i];                cnt=1;            }            else if(nums[i]==ans)                cnt++;            else                cnt--;                    }        return ans;    }