给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。
class Solution {
public:
int thirdMax(vector<int>& nums) {
sort(nums.rbegin(),nums.rend());
//reverse(nums.begin(),nums.end());
int flag = 1,temp = nums[0];
for(int i = 1 ; i < nums.size() ; i++)
{
if(temp!=nums[i])
{
flag++;
temp=nums[i];
}
if(flag >=3)
return nums[i];
}
return nums[0];
}
};
思路:
先从大到小排序,然后遍历,每发现一个不同的数flag+1,当flag=3的时候是第三大的数,如果循环完了flag还小于3说明不存在第三大的数,返回最大的数。