https://leetcode.com/problems/third-maximum-number/description/
题目
Given a non-empty array of integers, return the third maximum number in this array. If it does not exist, return the maximum number. The time complexity must be in O(n).
Example 1:
Input: [3, 2, 1]
Output: 1
Explanation: The third maximum is 1.
Example 2:
Input: [1, 2]
Output: 2
Explanation: The third maximum does not exist, so the maximum (2) is returned instead.
Example 3:
Input: [2, 2, 3, 1]
Output: 1
Explanation: Note that the third maximum here means the third maximum distinct number.
Both numbers with value 2 are both considered as second maximum.
题目翻译
题目解析
参考答案
set 遍历的时候,会从小到大。
#include <iostream>
#include <string>
#include <vector>
#include <set>
using namespace std;
class Solution {
public:
int thirdMax(vector<int>& nums) {
set<int> setThirdMax;
vector<int>::iterator iter = nums.begin();
while (iter != nums.end())
{
setThirdMax.insert(*iter);
if (setThirdMax.size() > 3)
{
setThirdMax.erase(setThirdMax.begin());
}
++iter;
}
return setThirdMax.size() == 3 ? *setThirdMax.begin() : *setThirdMax.rbegin();
}
};
int main()
{
vector<int> nums;
nums.push_back(1);
nums.push_back(2);
nums.push_back(3);
nums.push_back(4);
Solution o;
int iResult = o.thirdMax(nums);
cout << iResult << endl;
return 0;
}