/*
* @lc app=leetcode id=414 lang=cpp
*
* [414] Third Maximum Number
*/
// @lc code=start
class Solution {
public:
int thirdMax(vector<int>& nums) {
priority_queue<int, vector<int>, greater<int>> pq;
unordered_map<int,bool> mp;
int N = nums.size();
for(int i=0;i<N;i++){
if(mp[nums[i]]) continue;
mp[nums[i]] = true;
pq.push(nums[i]);
if(pq.size() > 3) {
pq.pop();
}
}
if(pq.size() >= 3) return pq.top();
int ans = 0;
while(!pq.empty()){
ans = pq.top();
//printf("%d\n",ans);
pq.pop();
}
return ans;
}
};
// @lc code=end