class Solution {
public int thirdMax(int[] nums) {
int len= nums.length;
int[] threeNum= new int[]{Integer.MIN_VALUE,Integer.MIN_VALUE,Integer.MIN_VALUE,count};
for(int i=0;i<len;++i){
threeNum=insert(threeNum,nums[i]);
}
return threeNum[3]>=3?threeNum[2]:threeNum[0];
}
private int[] insert(int[] nums,int num){
if(num>nums[0]){
nums[3]++;
nums[2]=nums[1];
nums[1]=nums[0];
nums[0]=num;
}
else if(num<nums[0]&&num>nums[1]){
nums[3]++;
nums[2]=nums[1];
nums[1]=num;
}
else if(num<nums[1]&&num>nums[2]){
nums[3]++;
nums[2]=num;
}
else if(num==Integer.MIN_VALUE&&!existMIN_VALUE)
nums[3]++;
return nums;
}
这里还没有完全写完 ,还需要一个flag来记录有没有出现过Integer.MIN_VALUE,其他测试都是正确的,除了类似这样[-2147483648,-2147483648,-2147483648,-2147483648,1,1,1]
leetcode NO. 414第三大的数(卡最小值真的恶心)
最新推荐文章于 2019-08-31 18:00:00 发布