版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/glw0223/article/details/88846828
分析
- INT_MIN是int的最小值
class Solution {
public:
int thirdMax(vector<int>& nums) {
if(nums.size()==1)
return nums[0];
if(nums.size()==2)
return max(nums[0],nums[1]);
int max1=INT_MIN,max2=INT_MIN,max3=INT_MIN;
bool flag=false;//nums里是否有INT_MIN
for(int i=0;i<nums.size();++i){
if(nums[i]==INT_MIN)
flag=true;
if(nums[i]>max1){
max3=max2;
max2=max1;
max1=nums[i];
continue;
}
if(nums[i]>max2&&nums[i]!=max1){
max3=max2;
max2=nums[i];
continue;
}
if(nums[i]>max3&&nums[i]!=max2&&nums[i]!=max1){
max3=nums[i];
}
}
//nums无INT_MIN但max3为INT_MIN则没有第三大的数;max2为INT_MIN则max3也为INT_MIN故没有第三大的数
if((max3==INT_MIN&!flag)||max2==INT_MIN)
return max1;
else
return max3;
}
};