剑指 Offer 39. 数组中出现次数超过一半的数字
作者:互联网
https://leetcode-cn.com/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/
使用摩尔投票,使用两个变量。遍历数组
第一个记录当前遍历的数组的值,第二个记录当前遍历数字出现的次数
如果下一个数字和上一个是相同的,那么记录的变量就+1,不同的就-1,当减到0的时候,第一个记录当前值的变量就变成使votes减到0 的那个数字
class Solution {
public int majorityElement(int[] nums) {
int x = 0, votes = 0;
for(int num : nums){
if(votes == 0) x = num;
votes += num == x ? 1 : -1;
}
return x;
}
}
标签:39,遍历,shu,Offer,int,记录,votes,num,数组 来源: https://www.cnblogs.com/zhbeii/p/15882609.html