Find K-th largest element in an array.
Note
You can swap elements in the array
Example
In array [9,3,2,4,8], the 3rd largest element is 4
In array [1,2,3,4,5], the 1st largest element is 5, 2nd largest element is 4, 3rd largest element is 3 and etc.
Challenge
O(n) time, O(1) space
public int kthLargestElement(int k, ArrayList<Integer> numbers) { int N = numbers.size(); Integer[] A = new Integer[N]; numbers.toArray(A); k = N - k; // 0 based kth smallest index return kthSmallest(A, 0, N-1, k); } public int kthSmallest(Integer[] A, int lo, int hi, int k) { if(k<lo || k>hi) return -1; int p = partition(A, lo, hi); if(p == k) return A[p]; if(p < k) { return kthSmallest(A, p+1, hi, k); } else { return kthSmallest(A, lo, p-1, k); } } private int partition(Integer[] A, int lo, int hi) { int pivot = A[hi]; int p = lo; for(int i=lo; i<hi; i++) { if(A[i] < pivot) { swap(A, i, p++); } } swap(A, p, hi); return p; } private void swap(Integer[] A, int i, int j) { Integer tmp = A[i]; A[i] = A[j]; A[j] = tmp; }
References:
http://www.algorithmsandme.com/2013/08/find-kth-smallest-element-application.html
http://www.geeksforgeeks.org/kth-smallestlargest-element-unsorted-array/
相关推荐
703.Kth_Largest_Element_in_a_Stream数据流中的第K大元素【LeetCode单题讲解系列】
题目2:Kth Largest Element in an Array 搜索算法题目 题目1:二分查找 题目2:搜索旋转排序数组 动态规划题目 题目1:斐波那契数列 题目2:最长公共子序列 贪心算法题目 题目1:分发饼干 题目2:跳跃游戏 回溯算法...
8 Kth Largest Element in an Array 35 9 Wildcard Matching 37 10 Regular Expression Matching in Java 39 11 Merge Intervals 43 12 Insert Interval 45 13 Two Sum 47 14 Two Sum II Input array is sorted 49 ...
java入门 java_leetcode题解之215_Kth_Largest_Element_in_an_Array
python python_leetcode题解之215_Kth_Largest_Element_in_an_Array.py
10. 深入理解堆和优先队列:在问题如Kth Largest Element in an Array(数组中第K大的元素)中会用到堆和优先队列的知识。 11. 栈与单调栈问题:例如Valid Parentheses(有效的括号)、Largest Rectangle in ...
第215题是“数组中的第K个最大元素”(Find the Kth Largest Element in an Array),这是一个常见的数据结构与算法问题,考察了排序、堆和快速选择等算法知识。本题解将详细阐述如何用Python解决这个问题。 首先,...
- 实现Top-K问题:找到数组或流中的第K个最大或最小元素,如LeetCode题目《Kth Largest Element in a Stream》。 - 滑动窗口最大值:在滑动窗口内维护一个最大值,如LeetCode题目《Sliding Window Maximum》。 - ...
Give an O(lg m + lgn) time algorithm for computing the kth largest element in the union of the two lists. (For simplicity, you can assume that the elements of the two lists are distinct). Practice 2 ...
- Kth Largest Element(第k个最大元素) - First Position of Target(目标值首次出现的位置) - Search Insert Position(搜索插入位置) - Search for a Range(搜索范围) - First Bad Version(第一个错误...
- Kth Largest Element in an Array:在未排序的数组中找到第k大的元素。 - Binary Search:二分查找法。 - First Position of Target:在有序数组中找到目标值的第一个位置。 - Search Insert Position:在排序数组...
largest element from an unsorted array in linear time. (1) If the number of elements in an array is large .Divide the array into arrays each with 5 elements. n/5 arrays. (2) Compute Median of these 5 ...
Element Leetcode 4. Median of Two Sorted Arrays 注意:后两题是与快速排序非常相似的快速选择(Quick Select)算法,面试中很常考 链表类(Linked List): 基础知识:链表如何实现,如何遍历链表。链表可以保证...
- **快速选择算法(Kth Largest Element)**: 选择一个无序数组中的第k大的元素。 #### 二分搜索扩展 - **二分搜索变体(First Position of Target)**: 在排序数组中寻找目标值的第一个位置。 - **查找插入位置(Search...
Largest Element in an Array(方法1:堆 方法二:快速排序(推荐)) (面试题40:最小的k个数) LeetCode 347 Top K Frequent Elements(堆排序、桶排序) LintCode 532 Reverse Pairs(归并排序的应用)(面试题...
kth largest element in an array . use heap, use quick select. maximal square. Use dynamic programming. use just O(n) space. The extra space equals matrix col length. majority element ii . 使用 "摩尔...
lru缓存leetcode 力码 大批 152-最大乘积子阵列,169-多数元素,189-...215-Kth Largest element in an Array(Heap Sort), HARD: 218-The Skyline Problem(Mergesort) ) 动态规划 HARD: 174-Dungeon Game, HARD: 188
27 | [Remove Element](https://leetcode.com/problems/remove-element/) | [C++](./C++/remove-element.cpp) [Python](./Python/remove-element.py) | _O(n)_ | _O(1)_ | Easy || 31 | [Next Permutation]...
例如,"Kth Largest Element in an Array"可以通过优先队列在O(n log k)的时间复杂度内找到答案。 五、Java特性的运用 Java的一些高级特性如泛型、枚举、接口、匿名内部类、Lambda表达式等也会在解题中发挥重要作用...