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
LeetCode 169. Majority Element