215. Kth Largest Element in an Array(快排的分治思想)
来源:互联网 发布:云软件哪个好 编辑:程序博客网 时间:2024/04/29 08:42
题意:
给你一个无序的数组,让你求第k大元素;
思路:
比较简单的是利用最小堆(优先队列)保存前k大的元素,最后返回堆顶即可。还有一种方法是利用快排分治的方法,判断每次确定的键值是不是所求的元素;
是的话结束递归返回答案,
不是的话:
1.键值是第x大元素(x>k),此时所求元素在键值的右边,继续在右边区间递归。
2.键值是第x大元素(x<k),此时所求元素在键值的左边,继续在左边区间递归(注意修改k的值,k的值应改为k-x);
java代码:
class Solution { public int findKthLargest(int[] nums, int k) { return QuickSelect(nums,0,nums.length-1,k); } public int QuickSelect(int[] nums, int s, int e,int k){ int temp = nums[s]; int l = s; int r = e; while(l<r){ while(l<r&&nums[r]>=temp){ r--; } nums[l] = nums[r]; while(l<r&&nums[l]<=temp){ l++; } nums[r] = nums[l]; } nums[l] = temp; if(e-l+1==k){ return nums[l]; } else if(e-l+1>k){ return QuickSelect(nums,l+1,e,k); } else{ return QuickSelect(nums,s,l-1,k-e+l-1); } }}
阅读全文
1 0
- 215. Kth Largest Element in an Array(快排的分治思想)
- leetcode--- Kth Largest Element in an Array---快排
- 【特别重要!!!快排的partition思想】【leetcode题解】【M】【71】Kth Largest Element in an Array
- LeetCode 215 Kth Largest Element in an Array 含有各种快排对比
- 215.Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- hive常用优化
- 阿里云加密服务基本认识(下篇)
- 前端面试
- 【LeetCode】657.Judge Route Circle
- 极光推送消息的自动集成与手动集成
- 215. Kth Largest Element in an Array(快排的分治思想)
- spring 的Column注解
- 构造函数解析
- 网络状态判断工具
- JS判断PC端还是移动端
- 解决安装软件时的/usr/local/lib/libz.a(compress.o)错误
- SparkStreaming快速入门程序----WordCount
- poi-tl实现自定义RenderPolicy实现对表格进行列表
- 守着“伪需求”闭门造车,还谈什么大数据价值变现