给定整数数组数,在此数组中返回第三个不同的最大数字。如果不存在第三个最大值,请返回最大数字。
示例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);
}
}