414.第三号数字
#java #leetcode #数组

给定整数数组数,在此数组中返回第三个不同的最大数字。如果不存在第三个最大值,请返回最大数字。

示例1:

输入: nums = [3,2,1]
输出: 1
解释:
第一个不同的最大值是3。
第二个不同的最大值为2。
第三个不同的最大值是1。

示例2

输入: nums = [1,2]
输出: 2
解释:
第一个不同的最大值是2。
第二个不同的最大值是1。
不存在第三个不同的最大值,因此返回最大值(2)。

示例3:

输入: nums = [2,2,3,1]
输出: 1
解释:
第一个不同的最大值是3。
第二个不同的最大值为2(两个2都在一起计数,因为它们具有相同的值)。
第三个不同的最大值是1。

约束:

1 <= nums.length <= 104
-231 <= nums [i] <= 231-1

解决方案:

public class Solution {
    public int thirdMax(int[] nums) {
        long m1 = Long.MIN_VALUE;
        long m2 = Long.MIN_VALUE;
        long m3 = Long.MIN_VALUE;
        for (int num : nums) {
            if (num == m1 || num == m2 || num == m3) {
                continue;
            }
            if (num > m1) {
                m3 = m2;
                m2 = m1;
                m1 = num;
            } else if (num > m2) {
                m3 = m2;
                m2 = num;
            } else if (num > m3) {
                m3 = num;
            }
        }
        return (int) (m3 != Long.MIN_VALUE ? m3 : m1);
    }
}