leetcode-選擇排序-215

import java.util.PriorityQueue; /** <p>給定整數數組 <code>nums</code> 和整數 <code>k</code>,請返回數組中第 <code><strong>k</strong></code> 個最大的元素。</p> <p>請注意,你需要找的是數組排序後的第 <code>k</code> 個最大的元素,而不是第 <code>k</code> 個不同的元素。</p> <p>你必須設計並實現時間複雜度爲 <code>O(n)</code> 的算法解決此問題。</p> <p>&nbsp;</p> <p><strong>示例 1:</strong></p> <pre> <strong>輸入:</strong> <code>[3,2,1,5,6,4],</code> k = 2 <strong>輸出:</strong> 5 </pre> <p><strong>示例&nbsp;2:</strong></p> <pre> <strong>輸入:</strong> <code>[3,2,3,1,2,4,5,5,6], </code>k = 4 <strong>輸出:</strong> 4</pre> <p>&nbsp;</p> <p><strong>提示: </strong></p> <ul> <li><code>1 &lt;= k &lt;= nums.length &lt;= 10<sup>5</sup></code></li> <li><code>-10<sup>4</sup>&nbsp;&lt;= nums[i] &lt;= 10<sup>4</sup></code></li> </ul> <div><div>Related Topics</div><div><li>數組</li><li>分治</li><li>快速選擇</li><li>排序</li><li>堆(優先隊列)</li></div></div><br><div><li>👍 1787</li><li>👎 0</li></div> */ //leetcode submit region begin(Prohibit modification and deletion) class Solution { public int findKthLargest(int[] nums, int k) { PriorityQueue<Integer> pq = new PriorityQueue(); for (int e : nums){ pq.offer(e); if(pq.size()>k){ pq.poll(); } } return pq.peek(); } } //leetcode submit region end(Prohibit modification and deletion)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章