Majority Element
Majority Element
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.You may assume that the array is non-empty and the majority element always exist in the array.
Solution
public class MajorityElement {
public static void main(String[] args) {
System.out.println(majorityElement(new int[]{1,2,3,1,1,1,3,4}));
System.out.println(majorityElement(new int[]{4,4,1}));
System.out.println(majorityElement(new int[]{4,4,1,2,4}));
}
public static int majorityElement(int[] nums) {
int count = 1;
int result = nums[0];
for (int i = 1; i < nums.length; i++) {
if (count == 0) {
result = nums[i];
count = 1;
} else {
if (nums[i] == result) {
count++;
} else {
count--;
}
}
}
return result;
}
}
思路
因为这个众数出现的次数超过一半, 所以将这个数和其他数抵消, 最后余下的都是这个众数
需要一个变量记录遍历的数字, 还有一个变量记录当前统计该数出现的次数
如果出现相同, 次数 ++ ; 否则, 次数 – . 次数为0 时候, 重新选择记录数字