摩尔投票法:寻找超越一半的数字
- 假设arr[0]是超越一半的数,遍历集合:
- 若遍历元素和arr[0]相同,则count + 1;
- 若遍历元素和arr[0]不同,则count - 1;
- 如果计数为0,说明前面的数字被抵消,数量超越一般的数组在后面。
import java.util.*;
public class Solution {
public int MoreThanHalfNum_Solution(int [] array) {
int x = array[0], count = 0;
for(int num : array){
if(count == 0) x = num;
count += num == x ? 1 : -1;
}
return x;
}
}排序取中:
若某数的数量超过一半,则有序数列的中点就是该数。
import java.util.*;
public class Solution {
public int MoreThanHalfNum_Solution(int [] array) {
Arrays.sort(array);
return array[array.length / 2];
}
}


京公网安备 11010502036488号