49.Kth Largest Element in an Array
Level:
Medium
题目描述:
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.
Example 1:
Input: [3,2,1,5,6,4] and k = 2
Output: 5
Example 2:
Input: [3,2,3,1,2,4,5,5,6] and k = 4
Output: 4
Note:
You may assume k is always valid, 1 ≤ k ≤ array's length.
思路分析:
题目要求找出未排序数组的第K个最大的数,我们可以转换为找从小到大排列的第n-k个数。我们使用快速排序的partition函数,partition函数选择一个flag值,将数组中小于flag的值放在flag左边,将大于flag的值放在右边,我们要找第n-k个数,可以通过判断flag的位置确定,如果flag的位置正好是n-k,那我们找到答案,否则我们可以将范围缩小继续查找。
代码:
public class Solution{
    public int findKthLargest(int[] nums,int k){
        int n=nums.length-k;
        int low=0;
        int high=nums.length-1;
        int t;
        while(low<high){
            t=partition(nums,low,high);
            if(t>n){
                high=t-1;
            }else if(t<n){
                low=t+1;
            }else{
                break;
            }
        }
        return nums[n];
    }
    public int partition(int []nums,int low,int high){
        int key=nums[low];
        while(low<high){
            while(low<high&&nums[high]>=key){
                high--;
            }
            nums[low]=nums[high];
            while(low<high&&nums[low]<=key){
                low++;
            }
            nums[high]=nums[low];
        }
        nums[low]=key;
        return low;
    }
}
												
											49.Kth Largest Element in an Array的更多相关文章
- Kth Largest Element in an Array
		
Find K-th largest element in an array. Notice You can swap elements in the array Example In array [9 ...
 - leetcode面试准备:Kth Largest Element in an Array
		
leetcode面试准备:Kth Largest Element in an Array 1 题目 Find the kth largest element in an unsorted array. ...
 - 【LeetCode】215. Kth Largest Element in an Array (2 solutions)
		
Kth Largest Element in an Array Find the kth largest element in an unsorted array. Note that it is t ...
 - 剑指offer 最小的k个数 、 leetcode 215. Kth Largest Element in an Array 、295. Find Median from Data Stream(剑指 数据流中位数)
		
注意multiset的一个bug: multiset带一个参数的erase函数原型有两种.一是传递一个元素值,如上面例子代码中,这时候删除的是集合中所有值等于输入值的元素,并且返回删除的元素个数:另外 ...
 - Leetcode 之 Kth Largest Element in an Array
		
636.Kth Largest Element in an Array 1.Problem Find the kth largest element in an unsorted array. Not ...
 - [Leetcode Week11]Kth Largest Element in an Array
		
Kth Largest Element in an Array 题解 题目来源:https://leetcode.com/problems/kth-largest-element-in-an-arra ...
 - Lettcode Kth Largest Element in an Array
		
Lettcode Kth Largest Element in an Array 题意:在无序数组中,寻找第k大的数字,注意这里考虑是重复的. 一直只会简单的O(nlogn)的做法,听说这题有O(n) ...
 - 网易2016 实习研发工程师 [编程题]寻找第K大 and leetcode 215. Kth Largest Element in an Array
		
传送门 有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数. 给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在. 测试样例: [1,3,5, ...
 - LN : leetcode 215 Kth Largest Element in an Array
		
lc 215 Kth Largest Element in an Array 215 Kth Largest Element in an Array Find the kth largest elem ...
 
随机推荐
- 20180306-time&datetime模块
			
在开始介绍时间模块之前先说明几点: 一. Python中常用以下几种形式表示时间 1.时间戳 2.格式化的时间字符串 3.元组(struct_time)(共九个元素),由于Python的time模块实 ...
 - 第十五章 Kubernetes调度器
			
一.简介 Scheduler 是 kubernetes 的调度器,主要的任务是把定义的 pod 分配到集群的节点上.听起来非常简单,但有很多要考虑的问题: ① 公平:如何保证每个节点都能被分配资源 ② ...
 - HttpClient测试框架
			
HttpClient是模拟Http协议客户端请求的一种技术,可以发送Get/Post等请求. 所以在学习HttpClient测试框架之前,先来看一下Http协议请求,主要看请求头信息. 如何查看HTT ...
 - BZOJ3622 已经没有什么好害怕的了  二项式反演+DP
			
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=3622 题解 首先显然如果 \(n - k\) 为奇数那么就是无解.否则的话,"糖果& ...
 - Codeforces Round #518 (Div. 1) Computer Game 倍增+矩阵快速幂
			
接近于死亡的选手没有水平更博客,所以现在每五个月更一篇. 这道题呢,首先如果已经有权限升级了,那么后面肯定全部选的是 \(p_ib_i\) 最高的. 设这个值为 \(M=\max \limits_i ...
 - gulp为css,js添加版本号
			
由于cdn缓存,更改样式后会有一段时间不生效,解决方法就是给css,js加上版本号效果如下: 1.安装gulp插件 npm install --save-dev gulp-rev (version:9 ...
 - cornerNet部分学习内容记录
			
cornerNet来源灵感是基于多人姿态估计的从下往上思想,预测角的热图,根据嵌入式向量对角进行分组,其主干网络也来自于姿态估计的环面网络. cornerNet的总体框架结构图如下: CornerN ...
 - centos 6.5 配置 DNS
			
编辑 vi /etc/resolv.conf 修改 DNS nameserver 202.96.134.133 nameserver 202.96.128.86 nameserver 8.8.8.8 ...
 - C#基础提升系列——C#委托
			
C# 委托 委托是类型安全的类,它定义了返回类型和参数的类型,委托类可以包含一个或多个方法的引用.可以使用lambda表达式实现参数是委托类型的方法. 委托 当需要把一个方法作为参数传递给另一个方法时 ...
 - python-字符、字符串、函数处理
			
1.列表元祖字典集合 列表 list = ["a", "b", "c", "d"] 元祖 tup = (1, 2, 3, ...