File tree Expand file tree Collapse file tree 1 file changed +27
-27
lines changed
solution/0200-0299/0215.Kth Largest Element in an Array Expand file tree Collapse file tree 1 file changed +27
-27
lines changed Original file line number Diff line number Diff line change 1
1
func findKthLargest (nums []int , k int ) int {
2
- n := len (nums )
3
- return quickSort (nums , 0 , n - 1 , n - k )
4
- }
5
-
6
- func quickSort (nums []int , left , right , k int ) int {
7
- if left == right {
8
- return nums [left ]
9
- }
10
- i , j := left - 1 , right + 1
11
- x := nums [(left + right )>> 1 ]
12
- for i < j {
13
- for {
14
- i ++
15
- if nums [i ] >= x {
16
- break
17
- }
2
+ k = len (nums ) - k
3
+ var quickSort func (l , r int ) int
4
+ quickSort = func (l , r int ) int {
5
+ if l == r {
6
+ return nums [l ]
18
7
}
19
- for {
20
- j --
21
- if nums [j ] <= x {
22
- break
8
+ i , j := l - 1 , r + 1
9
+ x := nums [(l + r )>> 1 ]
10
+ for i < j {
11
+ for {
12
+ i ++
13
+ if nums [i ] >= x {
14
+ break
15
+ }
16
+ }
17
+ for {
18
+ j --
19
+ if nums [j ] <= x {
20
+ break
21
+ }
22
+ }
23
+ if i < j {
24
+ nums [i ], nums [j ] = nums [j ], nums [i ]
23
25
}
24
26
}
25
- if i < j {
26
- nums [ i ], nums [ j ] = nums [ j ], nums [ i ]
27
+ if j < k {
28
+ return quickSort ( j + 1 , r )
27
29
}
30
+ return quickSort (l , j )
28
31
}
29
- if j < k {
30
- return quickSort (nums , j + 1 , right , k )
31
- }
32
- return quickSort (nums , left , j , k )
33
- }
32
+ return quickSort (0 , len (nums )- 1 )
33
+ }
You can’t perform that action at this time.
0 commit comments