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.

题目大意:

找出数组中超过一半的数。

 

C++实现代码:

#include<iostream>
#include<vector>
using namespace std;

class Solution {
public:
    int majorityElement(vector<int> &num) {
        if(num.empty())
            return -1;
        int n=num.size();
        int i;
        int index=0;
        int count=1;
        for(i=1;i<n;i++)
        {
            if(num[i]==num[index])
            {
                count++;
            }
            else
                count--;
            if(count<0)
            {
                count=1;
                index=i;
            }
        }
        return num[index];
    }
};

int main()
{
    vector<int> num={3,3,3,3,3,3,1,2,4,5,3,45,2,54};
    Solution s;
    cout<<s.majorityElement(num)<<endl;
}

 

#include<iostream>
#include<vector>
using namespace std;

class Solution {
public:
    int majorityElement(vector<int> &num) {
        if(num.empty())
            return -1;
        int n=num.size();
        int major=num[0];
        int i;
        int count=1;
        for(i=1;i<n;i++)
        {
            if(num[i]==major)
                count++;
            else
                count--;
            if(count<0)
            {
                count=1;
                major=num[i];
            }
        }
        return major;
    }
};

int main()
{
    vector<int> num={3,3,3,3,3,3,1,2,5,3,45,2,54};
    Solution s;
    cout<<s.majorityElement(num)<<endl;
}

 如果要找当好出现一半的数呢?此时这个数可能是通过上面的办法找到的那个数,也可能是最后一个数,因此,只需要再次遍历数组,找出与最后一个数相等的数的个数,如果小于一半,那么上面找出的数就是刚好出现一半的数,否则最后一个数是刚好出现一半的数。

 

时间: 2024-10-26 20:55:46

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. [分析] 思路是计算数组前一半出现元素的频率,

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. 思路: Find k different element

【LeetCode从零单排】No.169 Majority Element(hashmap用法)

题目 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

[LeetCode] 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. 解题思路:摩尔投票法.这种投票法先将第一个数字假设为众数

[LeetCode] Majority Element II

Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorithm should run in linear time and in O(1) space. 解题思路 摩尔投票法.投票法的核心是找出两个候选众数进行投票,需要两遍遍历,第一遍历找出两个候选众数,第二遍遍历重新投票验证这两个候选众数是否为众数即可. 实现代码 C++: class Solution

LeetCode All in One 题目讲解汇总(持续更新中...)

终于将LeetCode的免费题刷完了,真是漫长的第一遍啊,估计很多题都忘的差不多了,这次开个题目汇总贴,并附上每道题目的解题连接,方便之后查阅吧~ 如果各位看官们,大神们发现了任何错误,或是代码无法通过OJ,或是有更好的解法,或是有任何疑问,意见和建议的话,请一定要在对应的帖子下面评论区留言告知博主啊,多谢多谢,祝大家刷得愉快,刷得精彩,刷出美好未来- 博主制作了一款iOS的应用"Leetcode Meet Me",里面有Leetcode上所有的题目,并且贴上了博主的解法,随时随地都能

org.dom4j.Element是什么意思?

问题描述 org.dom4j.Element是什么意思? Element set = set(StringUtils.isBlank(bean.getYear()) ? ""未知年份"" : bean.getYear() bean.getAmount().toString()) 这句是什么意思? 解决方案 org.dom4j关于dom4j中的一些注意细节,Element和Node的区别 解决方案二: Element是dom4j工具包中的一个类,表示的是文档中的元素.

CSS教程:block element与inline element元素详解

块元素(block element)一般是其他元素的容器元素,块元素一般都从新行开始,它可以容纳内联元素和其他块元素,常见块元素是段落标签'P"."form"这个块元素比较特殊,它只能用来容纳其他块元素. 如果没有css的作用,块元素会顺序以每次另起一行的方式一直往下排.而有了css以后,我们可以改变这种html的默认布局模式,把块元素摆放到你想要的位置上去.而不是每次都愚蠢的另起一行.需要指出的是,table标签也是块元素的一种,table based layout和css

块(Block),元素(Element),修饰符(Modifier)

文章简介:BEM代表块(Block),元素(Element),修饰符(Modifier).这些术语的含意将在本文进一步阐述. 什么是BEM? BEM代表块(Block),元素(Element),修饰符(Modifier).这些术语的含意将在本文进一步阐述. 编程方法论中一个最常见的例子就是面向对象编程(OOP).这一编程范例出现在许多语言中.在某种程度上,BEM和OOP是相似的.它是一种用代码和一系列模式来描述现实情况的方法,它只考虑程序实体而无所谓使用什么编程语言. 我们使用BEM的原则创建了