LeetCode169. Majority Element

Posted

tags:

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

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

要求:

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.

想法:

1.比较普通的想法,有一个标记,初始值为1,对应一个计数初始值为1.

   遍历数组,若数组值和标记值相等,计数加一;否则计数减一,当计数为0时,更改标记值为当前数组值。代码如下:

 1 class Solution {
 2 public:
 3     int majorityElement(vector<int>& nums) {
 4         int res = nums[0];
 5         int count = 1;
 6         for (int i = 1;i < nums.size(); ++i) {
 7             if (res == nums[i]) count++;
 8             else {
 9                 count--;
10                 if (count == 0) {
11                     res = nums[i];
12                     count = 1;
13                 }
14             }
15         }
16         return res;
17     }
18 };

2.首先将整个数组排序,由题意返回数组中间值即可。代码如下:

class Solution {  
public:  
    int majorityElement(vector<int>& nums) {  
        sort(nums.begin(),  nums.end());  
        return nums[nums.size() / 2];  
    }  
}; 

第二个方法代码量相对较少,容易想到,不过我比较了一下运行时间,还是第一个方法的时间少。

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

LeetCode169. Majority Element

LeetCode 169. Majority Element

LeetCode 169. Majority Element

LeetCode 169:Majority Element

[LeetCode]169. Majority Element

Leetcode169. Majority Element