46. 主元素
来源:互联网 发布:卫生网络答题 编辑:程序博客网 时间:2024/04/30 13:04
描述:
给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。
注意,可以假设数组是非空的,且主元素总是存在于数组中。
样例:
给出数组[1,1,1,1,2,2,2],返回 1。
要求:
时间复杂度为O(n),空间复杂度为O(1)。
标签:贪心
思路:
在遍历数组的时候保存两个值:数组中的某个数字以及该数字目前出现次数。
遍历到下一个数字的时候,如果下一个数字和保存的数字相同,则次数加1;
如果下一个数字和保存的数字不同,则次数减1。
如果次数为零,保存下一个数字,并把次数设为1。
由于主元素出现的次数比其他所有数字出现的次数之和还多,那么主元素肯定是最后一次把次数设为1时对应的数字。
代码:
class Solution {
public:
int majorityNumber(vector<int> &nums) {
int majority=nums[0],time=1;
for(int i=1;i<nums.size();i++){
if(majority==nums[i]){
time++;
}
else {
time--;
}
if(time==0){
majority=nums[i];
time=1;
}
}
return majority;
}
};
- [LintCode]46.主元素
- LintCode 46.主元素
- 46. 主元素
- 主元素
- 主元素
- 主元素
- 主元素
- 主元素
- 主元素
- 主元素
- 主元素
- 主元素
- 主元素
- 主元素
- 主元素
- 主元素、主元素II、主元素III
- python_lintcode_47主元素_47主元素 II_48主元素 III
- 主元素II和主元素III
- iOS之利用GCD信号量控制并发网络请求
- Jsp 复习材料一: XML解析
- .NET漫游指南-008-泛型,装箱,泛型委托
- LeetCode-ReversePair
- 手写快速排序
- 46. 主元素
- 字节顺序
- 媒体查询@media
- POJ 2100 Graveyard Design
- POJ 2762【强联通缩点】【拓扑排序】Going from u to v or from v to u?
- 机器学习-导论
- lintcode有效的括号序列
- Git 常用操作(二)
- hdu5877 Weak Pair(dfs+线段树+离散化)