Skip to content

Commit 57c75b3

Browse files
authored
Update 215-kth-largest-element-in-an-array.js
1 parent 9630534 commit 57c75b3

File tree

1 file changed

+22
-26
lines changed

1 file changed

+22
-26
lines changed

215-kth-largest-element-in-an-array.js

+22-26
Original file line numberDiff line numberDiff line change
@@ -66,42 +66,38 @@ function quickselect(arr, lo, hi, k) {
6666
* @param {number} k
6767
* @return {number}
6868
*/
69-
const findKthLargest = function(list, k) {
70-
const len = list.length
71-
let lo = 0
72-
let hi = len - 1
73-
let pivot = 0
74-
let t = len - k
75-
while(lo < hi) {
76-
pivot = partition(list, lo, hi)
77-
if(pivot === t) {
78-
break
79-
} else if(pivot < t) {
80-
lo = pivot + 1
81-
} else if(pivot > t) {
82-
hi = pivot - 1
69+
const findKthLargest = function(nums, k) {
70+
const n = nums.length
71+
let l = 0, r = n - 1, t = n - k
72+
while(l < r) {
73+
const mid = partition(nums, l, r)
74+
if(mid < t) {
75+
l = mid + 1
76+
} else {
77+
if(mid === t) break
78+
else r = mid - 1
8379
}
8480
}
85-
86-
return list[t]
87-
}
81+
return nums[t]
82+
};
8883

89-
function partition(arr, s, e) {
90-
let t = arr[e]
91-
let i = s
92-
for(let j = s; j <= e - 1; j++) {
93-
if(arr[j] <= t) {
84+
function partition(arr, left, right) {
85+
let pivot = arr[right]
86+
let l = left, r = right - 1, j = left
87+
for(let i = left; i < right; i++) {
88+
if(arr[i] <= pivot) {
9489
swap(arr, i, j)
95-
i++
90+
j++
9691
}
9792
}
98-
swap(arr, i, e)
99-
return i
93+
swap(arr, j, right)
94+
return j
10095
}
10196

10297
function swap(arr, i, j) {
103-
let tmp = arr[i]
98+
const tmp = arr[i]
10499
arr[i] = arr[j]
105100
arr[j] = tmp
106101
}
107102

103+

0 commit comments

Comments
 (0)