Skip to content

Commit 9b62112

Browse files
committed
https://leetcode.cn/problems/closest-nodes-queries-in-a-binary-search-tree
1 parent 1e15414 commit 9b62112

File tree

3 files changed

+36
-15
lines changed

3 files changed

+36
-15
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ Step 2. Add the dependency
4545

4646
<summary>展开查看</summary>
4747

48+
https://leetcode.cn/problems/closest-nodes-queries-in-a-binary-search-tree
49+
4850
https://leetcode.cn/problems/number-of-unequal-triplets-in-array
4951

5052
https://leetcode.cn/problems/find-the-city-with-the-smallest-number-of-neighbors-at-a-threshold-distance/
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { TreeNode } from "../binary-tree-inorder-traversal/TreeNode.ts";
2+
import inorderTraversal from "../binary-tree-inorder-traversal/index.ts";
3+
import { lowerBound } from "../maximum-profit-in-job-scheduling/lowerBound.ts";
4+
import { upperBound } from "../maximum-profit-in-job-scheduling/upperBound.ts";
5+
6+
export default function closestNodes(
7+
root: TreeNode | null,
8+
queries: number[],
9+
): number[][] {
10+
const nums = inorderTraversal(root);
11+
12+
return queries.map((v) => {
13+
const left = lowerBound(0, nums.length, (m) => nums[m] <= v);
14+
const mini = nums[left - 1] <= v ? nums[left - 1] : -1;
15+
const right = upperBound(0, nums.length, (m) => nums[m] >= v);
16+
const maxi = nums[right] >= v ? nums[right] : -1;
17+
return [mini, maxi];
18+
});
19+
}
Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
export default function unequalTriplets(nums: number[]): number {
2-
nums.sort((a, b) => a - b);
3-
4-
let ans = 0;
5-
let start = 0;
6-
const n = nums.length;
7-
for (let i = 0; i < n - 1; i++) {
8-
const x = nums[i];
9-
if (x != nums[i + 1]) {
10-
ans += start * (i - start + 1) * (n - 1 - i);
11-
start = i + 1;
12-
}
13-
}
14-
return ans;
15-
}
1+
export default function unequalTriplets(nums: number[]): number {
2+
nums.sort((a, b) => a - b);
3+
4+
let ans = 0;
5+
let start = 0;
6+
const n = nums.length;
7+
for (let i = 0; i < n - 1; i++) {
8+
const x = nums[i];
9+
if (x != nums[i + 1]) {
10+
ans += start * (i - start + 1) * (n - 1 - i);
11+
start = i + 1;
12+
}
13+
}
14+
return ans;
15+
}

0 commit comments

Comments
 (0)