leetcode MajorityElement
思路转载自 博主:yealxxy https://blog.csdn.net/u014248127/article/details/79230221
上面博主写的是python
我附上我的java代码
public static int majorityElement(int[] nums) {
int num = -1;
int count = 0;
for (int i = 0; i < nums.length; i++) {
if (count == 0) {
num = nums[i];
count++;
} else {
if (nums[i] == num)
count++;
else
count--;
}
}
return num;
}
public static List<Integer> majorityElementII(int[] nums) {
List<Integer> res = new ArrayList<Integer>();
int num1 = -1;
int num2 = -2;
int count1 = 0;
int count2 = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] == num1) {
count1++;
continue;
}
if (nums[i] == num2) {
count2++;
continue;
}
if (count1 <= 0) {
count1 = 1;
num1 = nums[i];
continue;
}
if (count2 <= 0) {
count2 = 1;
num2 = nums[i];
continue;
}
count1--;
count2--;
}
count1 = 0;
count2 = 0;
for(int i : nums) {
if (i == num1)
count1++;
if (i == num2)
count2++;
}
if(count1 > nums.length/3)
res.add(num1);
if(count2 > nums.length/3)
res.add(num2);
return res;
}