题解 | #数组中出现次数超过一半的数字#
数组中出现次数超过一半的数字
http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163
摩尔投票法:假设数组首个元素为众数,遍历并统计票数,设众数的票数为1,非众数的票数为-1。当发生票数和为0时,令当前的数字为众数继续遍历数组,当遍历完数组后,最后一次被作为众数的那个数就是数组真正的众数。
import java.util.*;
public class Solution {
public int MoreThanHalfNum_Solution(int [] nums) {
// checkArguments(nums);
int result = nums[0];
int times = 1;
for (int i = 1; i < nums.length; i++) {
if (nums[i] == result) {
times++;
} else {
if (times > 0) {
times--;
} else {
result = nums[i];
times = 1;
}
}
}
return result;
}
}