Leetcode 169. Majority Element

Posted 喜欢吃西瓜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 169. Majority Element相关的知识,希望对你有一定的参考价值。

题目

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

Level: Easy

Discription:
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

代码

class Solution{
public:
    int arrayNesting(vector<int>& nums) {
       class Solution {
public:
    int majorityElement(vector<int>& nums) {
        int ret[2]={0};
        for(auto n: nums)
        {
            if(n==ret[0])
                ret[1]++;
            else
            {
                if(ret[1]!=0)
                    ret[1]--;
                else
                {
                    ret[0]=n;
                    ret[1]++;
                }
            }  
        }
        return ret[0];
        
    }
};

思考

  • 算法时间复杂度为O(n),空间复杂度为O(1)。
  • 最直接的想法就是排序取中间值输出,但是这样的时间复杂度是O(nlogn)。为了让时间复杂度为O(n),我们只能遍历一遍数组,如果对每个元素都计数,空间复杂度就是O(n)了,所以我们采用抵消的形式,最后记录下来的数字就是我们需要输出的数字。

以上是关于Leetcode 169. Majority Element的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 169. Majority Element

LeetCode169. Majority Element

LeetCode 169. Majority Element

LeetCode 169. Majority Element

LeetCode 169:Majority Element

[LeetCode]169. Majority Element