leecode_229 Majority Element II
2016-07-26 02:22
399 查看
Given an integer array of size n,
find all elements that appear more than
The algorithm should run in linear time and in O(1) space.
这样的元素最多两个
//solution from bernini
class Solution {
public:
vector<int> majorityElement(vector<int>& nums) {
int res1 = INT_MIN;
int res2 = INT_MAX;
int count1=0;
int count2=0;
for (int i=0;i<nums.size(); i++) {
if (count1==0 && nums[i] != res2) {
res1=nums[i];
count1=1;
continue;
}
if (count2==0 && nums[i] != res1) {
res2=nums[i];
count2=1;
continue;
}
if (nums[i] == res1) {
count1++;
continue;
}
if (nums[i] == res2) {
count2++;
continue;
}
if (nums[i]!=res1 && nums[i]!= res2) {
count1--;
count2--;
}
}
count1=0;
count2=0;
for (int i=0;i<nums.size();i++) {
if (nums[i]==res1)
count1++;
if (nums[i]== res2)
count2++;
}
vector<int> res;
if (count1>nums.size()/3)
res.push_back(res1);
if (count2>nums.size()/3)
res.push_back(res2);
return res;
}
};
find all elements that appear more than
⌊ n/3 ⌋times.
The algorithm should run in linear time and in O(1) space.
这样的元素最多两个
//solution from bernini
class Solution {
public:
vector<int> majorityElement(vector<int>& nums) {
int res1 = INT_MIN;
int res2 = INT_MAX;
int count1=0;
int count2=0;
for (int i=0;i<nums.size(); i++) {
if (count1==0 && nums[i] != res2) {
res1=nums[i];
count1=1;
continue;
}
if (count2==0 && nums[i] != res1) {
res2=nums[i];
count2=1;
continue;
}
if (nums[i] == res1) {
count1++;
continue;
}
if (nums[i] == res2) {
count2++;
continue;
}
if (nums[i]!=res1 && nums[i]!= res2) {
count1--;
count2--;
}
}
count1=0;
count2=0;
for (int i=0;i<nums.size();i++) {
if (nums[i]==res1)
count1++;
if (nums[i]== res2)
count2++;
}
vector<int> res;
if (count1>nums.size()/3)
res.push_back(res1);
if (count2>nums.size()/3)
res.push_back(res2);
return res;
}
};
相关文章推荐
- Android入门,简单画图板的实现,自定义组件的实现
- UVA 315 Network 求割点、套版题 求割点
- C++中数字与字符串之间的转换
- HDOJ-----4006优先队列
- 【js】setInterval是个坑!chrome定时截图保存实现
- Exit Codes
- Service基础知识
- 222. Count Complete Tree Nodes
- 【 POJ 1363 】Rails
- hdu 5441 Travel 离线操作+并查集
- Gym 100541 D. Treasure Box 循环(散乱的前缀+循环体)
- 2016/7/25开发网站资源库--有事没事常去看看
- 浅谈iOS中MVVM的架构设计与团队协作(很重要)
- hdu 3367 Pseudoforest 最大生成树
- HDOJ-----1237栈的变形
- 悬浮球动画
- 搭建服务器环境心得windows 2008 server + tomcat7 + mysql5
- C++拷贝构造函数
- LeetCode 67 Add Binary
- poj 1318 Word Amalgamation map的使用