414. Third Maximum Number

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.

 

求第3大的数,数组中有重复数字

 

C++(6ms):

 1 class Solution {
 2 public:
 3     int thirdMax(vector<int>& nums) {
 4         set<int> res ;
 5         for(int i : nums){
 6             res.insert(i) ;
 7             if (res.size() > 3)
 8                 res.erase(res.begin()) ;
 9         }
10         return res.size()==3?*res.begin():*res.rbegin() ;
11     }
12 };

 

posted @ 2017-09-29 10:43  __Meng  阅读(158)  评论(0编辑  收藏  举报