File tree 1 file changed +18
-11
lines changed
solution/0200-0299/0215.Kth Largest Element in an Array
1 file changed +18
-11
lines changed Original file line number Diff line number Diff line change 1
1
class Solution {
2
2
public int findKthLargest (int [] nums , int k ) {
3
- return find (nums , 0 , nums .length - 1 , k - 1 );
3
+ return findKthLargest (nums , 0 , nums .length - 1 , nums . length - k );
4
4
}
5
5
6
- private int find (int [] nums , int left , int right , int k ) {
7
- int i = left ;
8
- int j = right ;
9
- int index = nums [left ];
6
+ public int findKthLargest (int [] nums , int l , int r , int k ) {
7
+ int i = l , j = r ;
8
+ int temp = nums [i ];
10
9
while (i < j ) {
11
- while (i < j && index >= nums [j ]) j --;
10
+ while (i < j && nums [j ] >= temp ) {
11
+ j --;
12
+ }
12
13
if (i < j ) {
13
14
nums [i ++] = nums [j ];
14
15
}
15
- while (i < j && index <= nums [i ]) i ++;
16
+ while (i < j && nums [i ] <= temp ) {
17
+ i ++;
18
+ }
16
19
if (i < j ) {
17
20
nums [j --] = nums [i ];
18
21
}
19
22
}
20
- nums [i ] = index ;
21
- if (i > k ) return find (nums , left , i - 1 , k );
22
- else if (i < k ) return find (nums , i + 1 , right , k );
23
- else return nums [i ];
23
+ nums [i ] = temp ;
24
+ if (i == k ) {
25
+ return nums [i ];
26
+ } else if (i < k ) {
27
+ return findKthLargest (nums , i + 1 , r , k );
28
+ } else {
29
+ return findKthLargest (nums , l , i - 1 , k );
30
+ }
24
31
}
25
32
}
You can’t perform that action at this time.
0 commit comments