• 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)
    
    
  • 相关阅读:
    android平台从froyo 2.2开始支持jni单步调试
    Ubuntu java 环境变量
    ubuntu 10.04安装sunjava5jdk
    proc文件系统usb部分信息输出
    Linux lftp乱码解决及使用书签的方法
    用find & grep查找文件内容
    ubuntu10.10 下安装android 2.2开发环境
    VIM复制粘贴大全!
    kinect 无法在我的android开发板上显示的分析
    hdu 1087 Super Jumping! Jumping! Jumping!
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/16555112.html
Copyright © 2020-2023  润新知