其他分享
首页 > 其他分享> > 剑指 Offer 39. 数组中出现次数超过一半的数字

剑指 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