zoukankan      html  css  js  c++  java
  • leetcode Majority Element

    题目链接:https://leetcode.com/problems/majority-element/

    这道题目要求找出超过数组个数一半的元素

    分析:和编程之美上的寻找发帖"水王"是同一个题目,如果每次都删除两个不同的元素,那么在剩下的元素中,原来超过数组个数一半的元素,现在仍然会超过数组个数的一半,但是问题的规模减小了;那么如果用程序实现这一原理呢?可以使用一个candidate来记录结果的候选,并用time来记录当前这个元素出现的次数,如果后面的元素和candidate不相同,就同时删除这个元素和候选元素,相当于删除一对不同的元素,实现代码如下:

    class Solution
    {
    public:
        int majorityElement(vector<int>& nums)
        {
            int n = nums.size();
            int times = 0;
            int candidate;
    
            for(int i=0; i<n; ++i)
            {
                if(times == 0)
                {
                    times = 1;
                    candidate = nums[i];
                }
                else
                {
                    if(nums[i] == candidate)
                    {
                        ++times;
                    }
                    else
                    {
                        --times;
                    }
                }
            }
            return candidate;
        }
    };
  • 相关阅读:
    掘安作业二
    掘安作业一
    pwnable.kr-uaf-witeup
    pwnable.kr-cmd2-witeup
    pwnable.kr-cmd1-witeup
    pwnable.kr-lotto-witeup
    pwnable.kr-blackjack-witeup
    pwnable.kr-coin1-witeup
    PHPStorm 快速设置 快捷键
    crontab 使用教程
  • 原文地址:https://www.cnblogs.com/shirley-ict/p/5477358.html
Copyright © 2011-2022 走看看