414. 第三大的数

/**
     * 因为求第三大的数,所以需要一个指针存放第三大的
     * 如果后面的数大于最大数和第二大的数都需要把最大数,第二大,的数移动
     * @param nums
     * @return
     */
    public static int thirdMax(int[] nums) {
        if (nums.length==1){
            return nums[0];
        }
        if (nums.length==2){
            return Math.max(nums[0],nums[1]);
        }
        long max = Long.MIN_VALUE,sec = Long.MIN_VALUE,thrid = Long.MIN_VALUE;
        for (int i = 0; i < nums.length; i++) {
            //去重复
            if (nums[i]==max || nums[i]==sec){
                continue;
            }
            if (nums[i]>max){
                thrid = sec;
                sec = max;
                max = nums[i];
            }else if (nums[i]>sec && nums[i]!=max){
                thrid = sec;
                sec = nums[i];
            }else if (nums[i]>thrid && nums[i]!=sec){
                thrid = nums[i];
            }
        }
        return thrid==Long.MIN_VALUE? (int) max:(int) thrid;
    }

 

上一篇:414. 第三大的数、Leetcode的Go实现


下一篇:414. 第三大的数