Skip to content

Commit b0427fb

Browse files
authored
Update 973-k-closest-points-to-origin.js
1 parent 5632cf9 commit b0427fb

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

973-k-closest-points-to-origin.js

+34
Original file line numberDiff line numberDiff line change
@@ -132,3 +132,37 @@ class PriorityQueue {
132132
}
133133
}
134134
}
135+
136+
// another
137+
138+
/**
139+
* @param {number[][]} points
140+
* @param {number} k
141+
* @return {number[][]}
142+
*/
143+
const kClosest = function(points, k) {
144+
let len = points.length, l = 0, r = len - 1
145+
while (l <= r) {
146+
let mid = helper(points, l, r)
147+
if (mid === k) break
148+
if (mid < k) l = mid + 1
149+
else r = mid - 1
150+
}
151+
return points.slice(0, k)
152+
153+
function helper(arr, l, r) {
154+
const pivot = arr[l]
155+
while(l < r) {
156+
while(l < r && cmp(arr[r], pivot) >= 0) r--
157+
arr[l] = arr[r]
158+
while(l < r && cmp(arr[l], pivot) <= 0) l++
159+
arr[r] = arr[l]
160+
}
161+
arr[l] = pivot
162+
return l
163+
}
164+
165+
function cmp(a, b) {
166+
return a[0] * a[0] + a[1] * a[1] - b[0] * b[0] - b[1] * b[1]
167+
}
168+
};

0 commit comments

Comments
 (0)