查詢吧?
1、因為題目要求是on的時間,所以排序肯定是不行的。、
2、所以,重複的數字,都是同乙個位置,所以可以去重。比存在的且不同的數字即可。
3、用乙個大小為3的堆來比嗎?
好像就是topk問題
public答案裡面,排序的執行時間好快static
int thirdmax(int
nums)
iterator
iterator =set.iterator();
int count = 0;
priorityqueue
queue = new priorityqueue<>();
//把數字都遍歷一次,如果比queue裡最小的元素大,就刪掉queue裡最小的元素,扔進queue
//這樣到最後,queue裡面的元素,肯定都是比這些元素大的,這就是topk了
while
(iterator.hasnext())
else}}
//麻煩一點,這樣語意明確
if(queue.size()>=3)
else
if (queue.size()==2)
else
}
最快的答案,不可取,乙個個比較,如果k變多了呢?
LeetCode 414 第三大的數
隨機一題 給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2 示例 3 輸入 2,2,3,1 輸出 ...
LeetCode 414 第三大的數
給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2 示例 3 輸入 2,2,3,1 輸出 1 解釋 ...
LeetCode 414 第三大的數
給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2示例 3 輸入 2,2,3,1 輸出 1 解釋 注...