ruijiege

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
/**
     * 因为求第三大的数,所以需要一个指针存放第三大的
     * 如果后面的数大于最大数和第二大的数都需要把最大数,第二大,的数移动
     * @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;
    }

 

posted on 2021-07-31 08:13  哦哟这个怎么搞  阅读(20)  评论(0编辑  收藏  举报