美文网首页
414. Third Maximum Number

414. Third Maximum Number

作者: AlanGuo | 来源:发表于2017-01-04 02:26 被阅读0次

    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:

    用一个 HashSet 来判断元素是否曾经出现过,用 PriorityQueue来保存当前最大的3个元素(大小设为4防止 capacity 扩充引发额外开销)

    public class Solution
    {
        public int thirdMax(int[] nums)
        {
            PriorityQueue<Integer> pq = new PriorityQueue<>(4);
            Set<Integer> set = new HashSet<>();
            for(int i = 0; i < nums.length; i++)
            {
                if(!set.contains(nums[i])) 
                {
                    set.add(nums[i]);
                    pq.offer(nums[i]);
                    if (pq.size() > 3)
                        pq.poll();
                }
            }
            if(pq.size() > 2)
            {
                return pq.poll();
            }
            else
            {
                int result = 0;
                while(!pq.isEmpty())
                {
                    result = pq.poll();
                }
                return result;
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:414. Third Maximum Number

          本文链接:https://www.haomeiwen.com/subject/mwqovttx.html