原题链接:Third Maximum Number
分析:找出第三大的数,这是找出第K大的数这道题的一个简易版,当然可以使用找第K大的数的做法(快排,partition,O(N))。这里我们使用的是简单的找最大值的方法,找出第一个的数,找出第二大的数,找出第三大的数,就是结果。
题解:
public class Solution {
public int thirdMax(int[] nums) {
/*
Time Complexity:O(N)
Space Complexity:O(1)
*/
int f=nums[0],s=f,t=s;
boolean flag=false;
boolean exist=false;
for(int i=0;i<nums.length;i++){
if(nums[i]>f)f=nums[i];
}
for(int i=0;i<nums.length;i++){
if(nums[i]==f)continue;
if(!flag){
s=nums[i];
flag=true;
}
if(nums[i]>s)s=nums[i];
}
flag=false;
for(int i=0;i<nums.length;i++){
if(nums[i]==f || nums[i]==s)continue;
if(!flag){
t=nums[i];
flag=true;
exist=true;
}
if(nums[i]>t)t=nums[i];
}
return exist?t:f;
}
}