2017年12月18日 星期一

[LeetCode] 414. Third Maximum Number

轉自LeetCode

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++
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();
}
};
view raw thirdMaxInt.cpp hosted with ❤ by GitHub

沒有留言:

張貼留言