229-Majority-Element-II
0x0 题目详情
0x1 解题思路
0x2 代码实现
class Solution {
public List<Integer> majorityElement(int[] nums) {
List<Integer> result=new ArrayList<>();
if(nums==null || nums.length==0){
return result;
}
int can_A=0;
int A_count=0;
int can_B=0;
int B_count=0;
for(int elem:nums){
if(elem==can_A){
A_count++;
continue;
}
if(elem==can_B){
B_count++;
continue;
}
if(A_count==0){
can_A=elem;
A_count++;
continue;
}
if(B_count==0){
can_B=elem;
B_count++;
continue;
}
A_count--;
B_count--;
}
A_count=0;
B_count=0;
int pivot=nums.length/3;
for(int elem:nums){
if(elem==can_A){
A_count++;
}//这里一定要是 else if,因为有可能两个候选者是相同的
else if(elem==can_B){
B_count++;
}
}
if(A_count>pivot){
result.add(can_A);
}
if(B_count>pivot){
result.add(can_B);
}
return result;
}
}0x3 课后总结
Last updated