您的位置:首页 > 其它

LeetCode || Majority Element II

2015-09-11 11:21 246 查看
class Solution {
public:
vector<int> majorityElement(vector<int>& nums) {
//每次取出来三个数,如果三个数均不相同,则都删除。

if(nums.size() < 2)
return nums;

//找到数组中出现次数大于等于n/3的
int m1 = nums[0], m2;
int numM1 = 1, numM2  = 0 ;
int i  = 1;
while(i < nums.size())
{
if(numM1 == 0 && (numM2 == 0 || m2 != nums[i]))
{
m1 = nums[i];
numM1++;
}
else if(m2 == nums[i])//如果当前值和m2同
numM2++;
else if(nums[i] == m1)//如果当前值和m1同
numM1++;
else if(numM2 == 0)
{
numM2++;
m2 = nums[i];
}
else
{
numM1--;
numM2--;
}

i++;

}

//过滤掉出现次数等于n/3的。
vector<int> r;
if(numM1 > 0 || numM2 > 0)
{
int c1 = 0;
int c2 = 0;
//统计下m1出现的次数是不是大于n/3
for(int i = 0;i<nums.size();i++)
{
if(numM1> 0 && nums[i] == m1)
c1++;

if(numM2 > 0 && nums[i] == m2)
c2++;
}

if(c1 > nums.size()/3)
r.push_back(m1);
if(c2 > nums.size()/3)
r.push_back(m2);
}

return r;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: