LeetCode: 169. Majority Element

LeetCode: 169. Majority Element

题目描述

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.

Example 1:

Input: [3,2,3]
Output: 3

Example 2:

Input: [2,2,1,1,1,2,2]
Output: 2

解题思路

由于主元素(Majority Element) 的定义是出现次数超过半数的元素,且一定存在。因此,如果相邻元素不相等,直接丢弃,否则记录下它出现的次数, 留待和后面的比较。最后剩下的元素就主元素

AC 代码

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        int lastNum = INT_MIN;
        int cnt = 0;
        for(size_t i = 0; i < nums.size(); ++i)
        {
            if(cnt == 0 || lastNum == nums[i])
            {
                ++cnt;
                lastNum = nums[i];
            }
            else
            {
                --cnt;
            }
        }

        return lastNum;
    }
};
全部评论

相关推荐

09-22 09:42
门头沟学院 Java
牛客37185681...:马德,我感觉这是我面过最恶心的公司,一面是两个女hr,说什么实习前几个月属于试用期,试用期过了才能转成正式实习生,我***笑了,问待遇就是不说,问能不能接受全栈,沙币公司
如果可以选,你最想去哪家...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务