代码:
class Solution {
public int thirdMax(int[] nums) {
int maxNumber = Integer.MIN_VALUE;
int secondMaxNumber = Integer.MIN_VALUE;
int thirdMaxNumber = Integer.MIN_VALUE;
boolean flag = false;
for(int i = 0; i < nums.length; i++){
if(nums[i] == Integer.MIN_VALUE){
flag = true;
}
if(nums[i] > thirdMaxNumber && nums[i] != secondMaxNumber && nums[i] != maxNumber){
if(nums[i] > secondMaxNumber){
if(nums[i] > maxNumber){
thirdMaxNumber = secondMaxNumber;
secondMaxNumber = maxNumber;
maxNumber = nums[i];
}else{
thirdMaxNumber = secondMaxNumber;
secondMaxNumber = nums[i];
}
}else{
thirdMaxNumber = nums[i];
}
}
}
if (flag) {
// 最小值出现,且 t2 == t3 ,则表示:第三大的值没有出现
return secondMaxNumber == thirdMaxNumber ? maxNumber : thirdMaxNumber;
} else {
// 最小值没出现,如果 t3 还未初值,则表示:第三大的值没有出现
return thirdMaxNumber == Integer.MIN_VALUE ? maxNumber : thirdMaxNumber;
}
}
}
结果: