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的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 169. Majority Element
LeetCode 169. Majority Element