Leetcode 215. Kth Largest Element in an Array
来源:互联网 发布:有双头蛇 知乎 编辑:程序博客网 时间:2024/05/29 04:15
/** * How quick sort works. * First choose a pivot, say the first element of the array, * set two pointer low and high point to the start and end of the array, * from high to low, find a element that is samller than the pivot, replace nums[low] with nums[high] * then from low to high, find a element that is greater than the pivot, replace nums[high] with nums[low], * untill low == high, * set nums[low] as pivot, finish a partition. * Do the same for array [0, ..., index_of_pivot-1] and [index_of_pivot+1, ..., nums.length-1]. * Therefore, index_of_pivot is the index_of_pivot largetest element of the array. * For this problem. * So, if k > index_of_pivot, we need to move to the left, * else if k < index_of_pivot, we need to move to the right, * else index_of_pivot is k. */ public class Solution { public int findKthLargest(int[] nums, int k) { // note that pos is the (pos+1) samllest element in the array int low = 0, high = nums.length-1, pos = nums.length - k; // k is always valid while (true) { int idx = partition(nums, low, high); if (idx > pos) high = idx - 1; else if (idx < pos) low = idx + 1; else return nums[idx]; } } // returns (low+1)th samllest element in the array public static int partition(int[] nums, int low, int high) { int pivot = nums[low]; while (low < high) { // from high to low, find an elem that is less than the pivot while (low < high && nums[high] >= pivot) --high; nums[low] = nums[high]; // from low to high, find an elem that is greater than the pivot while (low < high && nums[low] <= pivot) ++low; nums[high] = nums[low]; } nums[low] = pivot; return low; }}AVG: T(n) = T(n/2) + O(n) = O(n)
WORST: T(n) = T(n-1) + O(n) = O(n^2)
0 0
- Leetcode Kth Largest Element in an Array
- Leetcode: Kth Largest Element in an Array
- LeetCode Kth Largest Element in an Array
- [LeetCode] Kth Largest Element in an Array
- [leetcode] Kth Largest Element in an Array
- leetcode--Kth Largest Element in an Array
- #leetcode#Kth Largest Element in an Array
- LeetCode Kth Largest Element in an Array
- 【Leetcode】Kth Largest Element in an Array
- Leetcode: Kth Largest Element in an Array
- Kth Largest Element in an Array -- leetcode
- [Leetcode]Kth Largest Element in an Array
- [LeetCode]Kth Largest Element in an Array
- *LeetCode-Kth Largest Element in an Array
- LeetCode----Kth Largest Element in an Array
- LeetCode Kth Largest Element in an Array
- leetcode-Kth Largest Element in an Array
- LeetCode -- Kth Largest Element in an Array
- hdu 6011 贪心+模拟
- POJ-3126 Prime Path(BFS 求最小步数)
- 自制3D显示引擎七:填充任意多边形
- 火星人家园发送正能量的源泉
- 一步步移植uCOS-II and LwIP (一)
- Leetcode 215. Kth Largest Element in an Array
- hdu 6012 维护区间前缀和
- 用力的想你
- 欢迎使用CSDN-markdown编辑器
- Caffe 在window10+VS2015安装
- 内部类
- grafana elasticsearch date类型问题
- STM32F103的IAP中Bootloader中断以及App程序不能进入中断的问题解决方法。
- 最大连续和的四种解法