414. Third Maximum Number
Given an array of integers, return the 3rd Maximum Number in this array, if it doesn't exist, return the Maximum Number. The time complexity must be O(n) or less.
思路:设置n1=第3大的数,n2=第2大的数,n3=最大数,最后返回n1。
int thirdMax(vector<int>& nums) {
int n=nums.size();
if(!n) return 0;
if(n==1) return nums[0];
else if(n==2) return max(nums[0],nums[1]);
int n1=min(nums[0],min(nums[1],nums[2])),n2=max(nums[0],min(nums[1],nums[2])),n3=max(nums[0],max(nums[1],nums[2]));
for(int i=3;i<n;i++)
{
if(nums[i]>n3)
{
n1=n2;
n2=n3;
n3=nums[i];
}
else if(nums[i]>=n2)
{
n2=nums[i];
}else if(nums[i]>n1)
n1=nums[i];
}
return n1;
}