Skip to content

Commit 8fbd62e

Browse files
committed
https://leetcode.cn/problems/find-the-city-with-the-smallest-number-of-neighbors-at-a-threshold-distance/
1 parent 28ab190 commit 8fbd62e

File tree

3 files changed

+50
-14
lines changed

3 files changed

+50
-14
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/find-the-city-with-the-smallest-number-of-neighbors-at-a-threshold-distance/
49+
4850
https://leetcode.cn/problems/last-stone-weight-ii/
4951

5052
https://leetcode.cn/problems/delete-characters-to-make-fancy-string/
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
export default function findTheCity(
2+
n: number,
3+
edges: number[][],
4+
distanceThreshold: number,
5+
): number {
6+
const dp: number[][] = Array(n)
7+
.fill(0)
8+
.map(() => Array(n).fill(Infinity));
9+
for (const [from, to, weight] of edges) {
10+
dp[from][to] = weight;
11+
dp[to][from] = weight;
12+
}
13+
for (let k = 0; k < n; k++) {
14+
for (let u = 0; u < n; u++) {
15+
for (let v = 0; v < n; v++) {
16+
dp[u][v] = Math.min(dp[u][v], dp[u][k] + dp[k][v]);
17+
}
18+
}
19+
}
20+
let ans = -1;
21+
let min_nb = Infinity;
22+
for (let u = 0; u < n; ++u) {
23+
let nb = 0;
24+
for (let v = 0; v < n; ++v) {
25+
if (v != u && dp[u][v] <= distanceThreshold) ++nb;
26+
}
27+
if (nb <= min_nb) {
28+
min_nb = nb;
29+
ans = u;
30+
}
31+
}
32+
33+
return ans;
34+
}

last-stone-weight-ii/index.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
function lastStoneWeightII(stones: number[]): number {
2-
const sum: number = stones.reduce((a: number, b: number): number => a + b);
3-
const target: number = Math.floor(sum / 2);
4-
const n: number = stones.length;
5-
// dp[j]表示容量(总数和)为j的背包所能装下的数(下标[0, i]之间任意取)的总和(<= 容量)的最大值
6-
const dp: number[] = new Array(target + 1).fill(0);
7-
for (let i: number = 0; i < n; i++) {
8-
for (let j: number = target; j >= stones[i]; j--) {
9-
dp[j] = Math.max(dp[j], dp[j - stones[i]] + stones[i]);
10-
}
11-
}
12-
return sum - dp[target] - dp[target];
13-
}
14-
export default lastStoneWeightII;
1+
function lastStoneWeightII(stones: number[]): number {
2+
const sum: number = stones.reduce((a: number, b: number): number => a + b);
3+
const target: number = Math.floor(sum / 2);
4+
const n: number = stones.length;
5+
// dp[j]表示容量(总数和)为j的背包所能装下的数(下标[0, i]之间任意取)的总和(<= 容量)的最大值
6+
const dp: number[] = new Array(target + 1).fill(0);
7+
for (let i: number = 0; i < n; i++) {
8+
for (let j: number = target; j >= stones[i]; j--) {
9+
dp[j] = Math.max(dp[j], dp[j - stones[i]] + stones[i]);
10+
}
11+
}
12+
return sum - dp[target] - dp[target];
13+
}
14+
export default lastStoneWeightII;

0 commit comments

Comments
 (0)