Majority Element

来源:互联网 发布:为知笔记 设置分享密码 编辑:程序博客网 时间:2024/06/14 05:15

题目地址:https://leetcode.com/problems/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.

题目的意思是,找到数组中出现次数大于数组长度一般的数字。

这个就用统计法就挺好,用key,value计数当前的状态。从第一个元素开始遍历,如果当前元素与key中的元素相同,那么value就加1,如果不相同,那么value就减1,如果value已经减没了,那么就该让位了,key设为当前元素值,并设value为1。

我们可以理解为一个Map的数据结构,只不过我们只有一个Entry罢了。

public class MajorityElement {    public int majorityElement(int[] nums) {        int key = nums[0];        int value = 1;        for (int i = 1; i < nums.length; i++) {            if (nums[i] == key) {                value++;            } else {                if (value == 1)                    key = nums[i];                else                    value--;            }        }        return key;    }}

时间复杂度为:O(n)

0 0