题意就是找出数组第三大的数,注意相同的数算作一个数,可以考虑遍历三次,第一次得到最大的数max1,第二次得到第二大的数max2,第三次就得到了第三大的数max3。
注意可以用INT_MIN(在limits.h里)表示int型最小的数,另外需要用一个tag记录是否找到max3,否则当max3==INT_MIN时无法判断max3是否是真的第三大的值还是初始值。
class Solution {
public:
int thirdMax(vector<int>& nums) {
int max1 = INT_MIN, max2 = INT_MIN, max3 = INT_MIN, tag = 0;
for(int num: nums)
if(max1 <= num)
max1 = num;
for(int num: nums)
if(max2 <= num && num != max1)
max2 = num;
for(int num: nums)
if(max3 <= num && num != max1 && num != max2){
max3 = num;
tag = 1;
}
if(tag == 0) return max1;
return max3;
}
};