leetcode (Third Maximum Number)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hsx1612727380/article/details/84503796

Title:Third Maximum Number   414

Difficulty:Easy

原题leetcode地址:https://leetcode.com/problems/third-maximum-number/

1. 设置最大值,第二大值,第三大值(有第三大的值,设置flag作为标记),需要注意Integer.MIN_VALUE作为边界值。

时间复杂度:O(n),三次for循环,但都是一层,最长的for循环需要遍历整个数组的长度。

空间复杂度:O(1),没有申请额外。

    /**
     * 设置最大值,第二大值,第三大值(有第三大值,设置边界值)
     * @param nums
     * @return
     */
    public static int thirdMax(int[] nums) {
        
        int firstMax = Integer.MIN_VALUE;
        int secondMax = Integer.MIN_VALUE;
        int thirdMax = Integer.MIN_VALUE;
        boolean flag = false;

        for (int i = 0; i < nums.length; i++) {
            if (nums[i] >= firstMax) {
                firstMax = nums[i];
            }
        }

        for (int i = 0; i < nums.length; i++) {
            if (nums[i] >= secondMax && nums[i] < firstMax) {
                secondMax = nums[i];
            }
        }

        for (int i = 0; i < nums.length; i++) {
            if (nums[i] >= thirdMax && nums[i] < secondMax) {
                thirdMax = nums[i];
                flag = true;
            }
        }

        if (flag) {
            return thirdMax;
        }
        else {
            return firstMax;
        }

    }

猜你喜欢

转载自blog.csdn.net/hsx1612727380/article/details/84503796