Skip to content

Commit 75ce46f

Browse files
committed
add kth largest element in an array
1 parent 9c2caa9 commit 75ce46f

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} k
4+
* @return {number}
5+
*/
6+
7+
// use quick select
8+
var findKthLargest = function(nums, k) {
9+
var smaller = [];
10+
var larger = [];
11+
var pivot = nums[parseInt(nums.length/2)];
12+
var pivotCnt = 0;
13+
14+
for(var i = 0; i < nums.length; i++) {
15+
var num = nums[i];
16+
17+
if(num > pivot) {
18+
larger.push(num);
19+
} else if(num < pivot) {
20+
smaller.push(num);
21+
} else {
22+
pivotCnt++;
23+
}
24+
}
25+
26+
if(k <= larger.length) { // if larger includes k
27+
return findKthLargest(larger, k);
28+
} else if(k - larger.length - pivotCnt <= 0) { // k is part of pivot
29+
return pivot;
30+
} else { // if smaller inclues k
31+
return findKthLargest(smaller, k - larger.length - pivotCnt);
32+
}
33+
};

0 commit comments

Comments
 (0)