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.<Solution>
C++ 可以使用 set 這個資料結構,會主動排序
因此,只要 set 的大小大於三,就把最小的砍掉
code 如下
C++
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Solution { | |
public: | |
int thirdMax(vector<int>& nums) { | |
set<int> top3; | |
for(const auto &n : nums) { | |
top3.insert(n); | |
if(top3.size() > 3) { | |
top3.erase(top3.begin()); | |
} | |
} | |
return top3.size() == 3 ? *top3.begin() : *top3.rbegin(); | |
} | |
}; |
沒有留言:
張貼留言