File tree Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change 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+ } ;
You can’t perform that action at this time.
0 commit comments