思路:逐个向后比较⌊ n/3 ⌋
位,如果有,则接着该数后面一个开始比较。返回结果前验证下是否有2个相同的答案。
public class Solution {
public List<Integer> majorityElement(int[] nums) {
List<Integer> ans=new ArrayList<Integer>();
if (nums.length==0) {
return ans;
}
if (nums.length==1) {
ans.add(nums[0]);
return ans;
}
if (nums.length==2) {
ans.add(nums[0]);
if (nums[1]!=nums[0]) {
ans.add(nums[1]);
}
return ans;
}
Arrays.sort(nums);
int l=nums.length/3;
for (int i = 0; i < nums.length-l;) {
if (nums[i+l]==nums[i]) {
ans.add(nums[i]);
i+=l;
}else {
i++;
}
}
for (int i = 1; i < ans.size(); i++) {
if (ans.get(i)==ans.get(i-1)) {
ans.remove(i);
i--;
}
}
return ans;
}
}