169. Majority Element

来源:互联网 发布:超级优化好看吗 编辑:程序博客网 时间:2024/06/10 03:52

题目

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.

Credits:
Special thanks to @ts for adding this problem and creating all test cases.

Subscribe to see which companies asked this question.

Show Tags
Show Similar Problems


思路

思路是vector减去两个不同的数字后那个超过一半的数字还是不变的
,通过不断去除两个不同的数来缩小范围


代码

class Solution {public:    int majorityElement(vector<int>& nums) {        int maxTimeNum;        size_t maxNumSum = 0;        size_t length = nums.size();        for(int i=0;i<length;i++)        {            //当前无最大次数数字记录            if(maxNumSum == 0)            {                maxTimeNum = nums[i];                maxNumSum++;                continue;            }            //当前数字与最大数字相同            if(maxTimeNum == nums[i])            {                maxNumSum++;                continue;            }            //不同则减去一个计数            maxNumSum--;        }        return maxTimeNum;    }};
0 0