Skip to content

Commit 118d8ac

Browse files
authored
Update 215-kth-largest-element-in-an-array.js
1 parent f8657b4 commit 118d8ac

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

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

+36
Original file line numberDiff line numberDiff line change
@@ -100,4 +100,40 @@ function swap(arr, i, j) {
100100
arr[j] = tmp
101101
}
102102

103+
// another
104+
105+
/**
106+
* @param {number[]} nums
107+
* @param {number} k
108+
* @return {number}
109+
*/
110+
const findKthLargest = function(nums, k) {
111+
const n = nums.length
112+
let l = 0, r = n - 1, t = n - k
113+
while(l < r) {
114+
const idx = partition(nums, l, r)
115+
if (idx === t) return nums[t]
116+
if (idx < t) l = idx + 1
117+
else r = idx - 1
118+
}
119+
return nums[l]
120+
};
121+
122+
function partition(arr, l, r) {
123+
let tmp = l, pivot = arr[l]
124+
while(l < r) {
125+
while(l < r && arr[r] >= pivot) r--
126+
while(l < r && arr[l] <= pivot) l++
127+
swap(arr, l, r)
128+
}
129+
swap(arr, l, tmp)
130+
return l
131+
}
132+
133+
function swap(arr, i, j) {
134+
const tmp = arr[i]
135+
arr[i] = arr[j]
136+
arr[j] = tmp
137+
}
138+
103139

0 commit comments

Comments
 (0)