Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit de21e8d

Browse files
authored
feat: add js solution to lc problem: No. 1334 (doocs#3334)
1 parent aa4e2e0 commit de21e8d

File tree

6 files changed

+540
-0
lines changed

6 files changed

+540
-0
lines changed

‎solution/1300-1399/1334.Find the City With the Smallest Number of Neighbors at a Threshold Distance/README.md

Lines changed: 190 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,50 @@ function findTheCity(n: number, edges: number[][], distanceThreshold: number): n
329329
}
330330
```
331331

332+
#### JavaScript
333+
334+
```js
335+
function findTheCity(n, edges, distanceThreshold) {
336+
const g = Array.from({ length: n }, () => Array(n).fill(Infinity));
337+
const dist = Array(n).fill(Infinity);
338+
const vis = Array(n).fill(false);
339+
for (const [f, t, w] of edges) {
340+
g[f][t] = g[t][f] = w;
341+
}
342+
343+
const dijkstra = u => {
344+
dist.fill(Infinity);
345+
vis.fill(false);
346+
dist[u] = 0;
347+
for (let i = 0; i < n; ++i) {
348+
let k = -1;
349+
for (let j = 0; j < n; ++j) {
350+
if (!vis[j] && (k === -1 || dist[j] < dist[k])) {
351+
k = j;
352+
}
353+
}
354+
vis[k] = true;
355+
for (let j = 0; j < n; ++j) {
356+
dist[j] = Math.min(dist[j], dist[k] + g[k][j]);
357+
}
358+
}
359+
return dist.filter(d => d <= distanceThreshold).length;
360+
};
361+
362+
let ans = n;
363+
let cnt = Infinity;
364+
for (let i = n - 1; i >= 0; --i) {
365+
const t = dijkstra(i);
366+
if (t < cnt) {
367+
cnt = t;
368+
ans = i;
369+
}
370+
}
371+
372+
return ans;
373+
}
374+
```
375+
332376
<!-- tabs:end -->
333377

334378
<!-- solution:end -->
@@ -522,6 +566,152 @@ function findTheCity(n: number, edges: number[][], distanceThreshold: number): n
522566
}
523567
```
524568

569+
#### JavaScript
570+
571+
```js
572+
function findTheCity(n, edges, distanceThreshold) {
573+
const g = Array.from({ length: n }, () => Array(n).fill(Infinity));
574+
for (const [f, t, w] of edges) {
575+
g[f][t] = g[t][f] = w;
576+
}
577+
for (let k = 0; k < n; ++k) {
578+
g[k][k] = 0;
579+
for (let i = 0; i < n; ++i) {
580+
for (let j = 0; j < n; ++j) {
581+
g[i][j] = Math.min(g[i][j], g[i][k] + g[k][j]);
582+
}
583+
}
584+
}
585+
586+
let ans = n,
587+
cnt = n + 1;
588+
for (let i = n - 1; i >= 0; --i) {
589+
const t = g[i].filter(x => x <= distanceThreshold).length;
590+
if (t < cnt) {
591+
cnt = t;
592+
ans = i;
593+
}
594+
}
595+
return ans;
596+
}
597+
```
598+
599+
<!-- tabs:end -->
600+
601+
<!-- solution:end -->
602+
603+
<!-- solution:start -->
604+
605+
### Solution 3
606+
607+
<!-- tabs:start -->
608+
609+
#### TypeScript
610+
611+
```ts
612+
function findTheCity(n: number, edges: number[][], distanceThreshold: number): number {
613+
const MAX = Number.POSITIVE_INFINITY;
614+
const g = Array.from({ length: n }, () => new Map<number, number>());
615+
const dist: number[] = Array(n).fill(MAX);
616+
const vis: boolean[] = Array(n).fill(false);
617+
for (const [f, t, w] of edges) {
618+
g[f].set(t, w);
619+
g[t].set(f, w);
620+
}
621+
622+
const dijkstra = (u: number): number => {
623+
dist.fill(MAX);
624+
vis.fill(false);
625+
dist[u] = 0;
626+
const pq = new MinPriorityQueue();
627+
pq.enqueue(u, 0);
628+
629+
while (!pq.isEmpty()) {
630+
const u = pq.dequeue().element;
631+
if (vis[u]) continue;
632+
vis[u] = true;
633+
634+
for (const [v, w] of g[u]) {
635+
if (vis[v]) continue;
636+
637+
const wNext = dist[u] + w;
638+
if (wNext < dist[v]) {
639+
dist[v] = wNext;
640+
pq.enqueue(v, dist[v]);
641+
}
642+
}
643+
}
644+
645+
return dist.filter(d => d <= distanceThreshold).length;
646+
};
647+
648+
let ans = n;
649+
let cnt = MAX;
650+
for (let i = n - 1; i >= 0; --i) {
651+
const t = dijkstra(i);
652+
if (t < cnt) {
653+
cnt = t;
654+
ans = i;
655+
}
656+
}
657+
658+
return ans;
659+
}
660+
```
661+
662+
#### JavaScript
663+
664+
```js
665+
export function findTheCity(n, edges, distanceThreshold) {
666+
const MAX = Number.POSITIVE_INFINITY;
667+
const g = Array.from({ length: n }, () => new Map());
668+
const dist = Array(n).fill(MAX);
669+
const vis = Array(n).fill(false);
670+
for (const [f, t, w] of edges) {
671+
g[f].set(t, w);
672+
g[t].set(f, w);
673+
}
674+
675+
const dijkstra = u => {
676+
dist.fill(MAX);
677+
vis.fill(false);
678+
dist[u] = 0;
679+
const pq = new MinPriorityQueue();
680+
pq.enqueue(u, 0);
681+
682+
while (!pq.isEmpty()) {
683+
const u = pq.dequeue().element;
684+
if (vis[u]) continue;
685+
vis[u] = true;
686+
687+
for (const [v, w] of g[u]) {
688+
if (vis[v]) continue;
689+
690+
const wNext = dist[u] + w;
691+
if (wNext < dist[v]) {
692+
dist[v] = wNext;
693+
pq.enqueue(v, dist[v]);
694+
}
695+
}
696+
}
697+
698+
return dist.filter(d => d <= distanceThreshold).length;
699+
};
700+
701+
let ans = n;
702+
let cnt = MAX;
703+
for (let i = n - 1; i >= 0; --i) {
704+
const t = dijkstra(i);
705+
if (t < cnt) {
706+
cnt = t;
707+
ans = i;
708+
}
709+
}
710+
711+
return ans;
712+
}
713+
```
714+
525715
<!-- tabs:end -->
526716

527717
<!-- solution:end -->

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /