- 对应leetcode169——多数元素
多数元素
int moreThanHalfNum_Solution(vector<int>& nums) {
int val,cnt = 0;
for (auto x : nums){
if (!cnt) {
val = x;
cnt ++ ;
}
else{
if (x == val) cnt ++ ;
else cnt -- ;
}
}
return val;
}
- 对应leetcode229——求众数
给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。
vector<int> majorityElement(vector<int>& nums) {
int ll[3][2] = {0,0,0,0,0,0};
vector<int> Return_Data;
for(int i = 0; i < nums.size(); i++){
if((ll[1][0]) != 0 && (ll[1][1] != 0)){
if(ll[0][0] == nums[i]) ll[1][0]++;
else if(ll[0][1] == nums[i]) ll[1][1]++;
else{
ll[1][0]--;
ll[1][1]--;
}
continue;
}
if(ll[0][0] == nums[i]){
ll[1][0]++;
continue;
}else if(ll[0][1] == nums[i]){
ll[1][1]++;
continue;
}
if(ll[1][0] == 0){
ll[0][0] = nums[i];
ll[1][0]++;
}else{
if(ll[1][1] == 0){
ll[0][1] = nums[i];
ll[1][1]++;
}
}
}
for(int i = 0; i < nums.size(); i++){
if(nums[i] == ll[0][1]) ll[2][1]++;
else if(nums[i] == ll[0][0]) ll[2][0]++;
}
for(int i = 0; i < 2; i++){
if((float)ll[2][i]/nums.size() > 0.33334)Return_Data.push_back(ll[0][i]);
}
return(Return_Data);
}