剑指offer面试题39:数组中出现次数超过一半的数字(复习思路)

这道题,记录第一个元素,设置次数为1,每遇到一个不同的元素,次数减一,相同的元素则加一,当次数被减为0时,说明后面的元素和前面的最多的元素至少一样多,此时将元素设置为当前元素,次数设置为一,最后,被记录的元素,就是出现次数最多的。

    public int majorityElement(int[] nums) {
        int max_n = nums[0];
        int now = nums[0];
        int mark = 1;
        for(int count = 1;count < nums.length; count++){
            if(nums[count] == now){
                mark++; 
            }else{
                mark--;
            }
            if(mark == 0){
                mark = 1;
                now = nums[count];
            }
        }
        return now;
    }

猜你喜欢

转载自blog.csdn.net/qq_40473204/article/details/114392326