Skip to content

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ leetcode 测试
1010

1111
##### 包含的内容如下
1212

13+
https://leetcode.cn/problems/find-k-closest-elements/
14+
15+
https://leetcode.cn/problems/k-closest-points-to-origin/
16+
1317
https://leetcode.cn/problems/make-two-arrays-equal-by-reversing-sub-arrays/
1418

1519
https://leetcode.cn/problems/transform-to-chessboard/

find-k-closest-elements/index.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
export default function findClosestElements(
2+
arr: number[],
3+
k: number,
4+
x: number,
5+
): number[] {
6+
const size = (arr).length;
7+
let left = 0;
8+
let right = size - k;
9+
10+
while (left < right) {
11+
const mid = Math.floor(
12+
(left + right) / 2,
13+
);
14+
// # 尝试从长度为 k + 1 的连续子区间删除一个元素
15+
// # 从而定位左区间端点的边界值
16+
17+
//x大于左右端点的平均值
18+
if (2 * x > arr[mid] + arr[mid + k]) {
19+
//右移
20+
left = mid + 1;
21+
} else {
22+
//左移
23+
right = mid;
24+
}
25+
}
26+
27+
return arr.slice(left, left + k);
28+
}

k-closest-points-to-origin/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export default function kClosest(points: number[][], k: number): number[][] {
2+
return points.sort((a, b) => a[0] ** 2 + a[1] ** 2 - b[0] ** 2 - b[1] ** 2)
3+
.slice(0, k);
4+
}

0 commit comments

Comments
 (0)