题目来源:链接: [https://leetcode-cn.com/problems/majority-element/].
169.求众数
1.问题描述
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在众数。
示例1:
输入: [3,2,3]
输出: 3
注意:
输入: [2,2,1,1,1,2,2]
输出: 2
2.我的解决方案
很常规的排序后取中间的元素找出众数。
代码如下:
class Solution {
public:
int majorityElement(vector<int>& nums) {
sort(nums.begin(), nums.end());
int len = nums.size()/2;
if(len == 1 || len == 0)
{
return nums[len];
}
if( nums[len] == nums[len + 1] )
{
return nums[len + 1];
}
else
{
return nums[len];
}
}
};
3.大神们的解决方案
感觉我的sort排序 比较浪费时间,虽然我的代码简洁一点,但是速度慢了。
static const auto io_sync_off = []()
{
// turn off sync
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
return nullptr;
}(); // untie in/out streams
class Solution {
public:
int majorityElement(vector<int>& nums) {
int same=nums[0],sum=0;
for(int i=0;i<nums.size();i++){
if(sum==0){
same=nums[i];
}
if(same==nums[i]){
sum++;
}else{
sum--;
}
}
return same;
}
};
4.我的收获
待补,先回去睡觉啦。。。
今天的 任务完成的差不多了、、、
2019/3/16 胡云层 于南京 25