您的位置:首页 > 其它

LeetCode 169. Majority Element

2018-01-20 15:16 531 查看

题目

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.

找出数量超过半数的元素。前提:输入的数组非空

思考

排序后中位数即所求,因为结果元素数量超过⌊ n/2 ⌋。

使用两两不同的数抵消的方法,因为结果元素数量超过⌊ n/2 ⌋,所以抵消之后剩下的数肯定就是结果。

答案

c++

1.

复杂度取决于sort。

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


2.

复杂度为O(n)。

class Solution {
public:
int majorityElement(vector<int>& nums) {
int current = nums[0], count = 1;
for (int i = 1; i < nums.size(); i++) {
if (count == 0) {
current = nums[i];
count = 1;
} else {
if (nums[i] == current) count++;
else count--;
}
}
return current;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: