mirror of
https://github.com/ShusenTang/LeetCode.git
synced 2024-09-02 14:20:01 +00:00
28 lines
1.1 KiB
Markdown
28 lines
1.1 KiB
Markdown
![]() |
# [414. Third Maximum Number](https://leetcode.com/problems/third-maximum-number/description/)
|
|||
|
# 思路
|
|||
|
题意就是找出数组第三大的数,注意相同的数算作一个数,可以考虑遍历三次,第一次得到最大的数max1,第二次得到第二大的数max2,第三次就得到了第三大的数max3。
|
|||
|
注意可以用INT_MIN(在limits.h里)表示int型最小的数,另外需要用一个tag记录是否找到max3,否则当max3==INT_MIN时无法判断max3是否是真的第三大的值还是初始值。
|
|||
|
# C++
|
|||
|
```
|
|||
|
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;
|
|||
|
}
|
|||
|
};
|
|||
|
```
|