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 7ba7084

Browse files
feat: add typescript solution to lc problem: No.2065 (doocs#613)
No.2065.Maximum Path Quality of a Graph
1 parent b9b377a commit 7ba7084

File tree

3 files changed

+117
-0
lines changed

3 files changed

+117
-0
lines changed

‎solution/2000-2099/2065.Maximum Path Quality of a Graph/README.md‎

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@
8484

8585
<!-- 这里可写通用的实现逻辑 -->
8686

87+
DFS
88+
8789
<!-- tabs:start -->
8890

8991
### **Python3**
@@ -102,6 +104,46 @@
102104

103105
```
104106

107+
### **TypeScript**
108+
109+
```ts
110+
function maximalPathQuality(values: number[], edges: number[][], maxTime: number): number {
111+
const n = values.length;
112+
let g: Array<Array<Array<number>>> = Array.from({ length: n }, v => new Array());
113+
for (let edge of edges) {
114+
let [u, v, t] = edge;
115+
g[u].push([v, t]);
116+
g[v].push([u, t]);
117+
}
118+
let visited = new Array(n).fill(false);
119+
let ans = 0;
120+
121+
function dfs(u: number, time: number, value: number): void {
122+
// 索引0为终点
123+
if (!u) {
124+
ans = Math.max(value, ans);
125+
}
126+
for (let [v, dist] of g[u]) {
127+
if (time - dist >= 0) {
128+
if (!visited[v]) {
129+
visited[v] = true;
130+
dfs(v, time - dist, value + values[v]);
131+
visited[v] = false; // 回溯
132+
} else {
133+
dfs(v, time - dist, value);
134+
}
135+
}
136+
}
137+
}
138+
139+
// 索引0为起点
140+
visited[0] = true;
141+
dfs(0, maxTime, values[0]);
142+
143+
return ans;
144+
};
145+
```
146+
105147
### **...**
106148

107149
```

‎solution/2000-2099/2065.Maximum Path Quality of a Graph/README_EN.md‎

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,46 @@ The only node visited is 0, giving a maximal path quality of 0.
8686

8787
```
8888

89+
### **TypeScript**
90+
91+
```ts
92+
function maximalPathQuality(values: number[], edges: number[][], maxTime: number): number {
93+
const n = values.length;
94+
let g: Array<Array<Array<number>>> = Array.from({ length: n }, v => new Array());
95+
for (let edge of edges) {
96+
let [u, v, t] = edge;
97+
g[u].push([v, t]);
98+
g[v].push([u, t]);
99+
}
100+
let visited = new Array(n).fill(false);
101+
let ans = 0;
102+
103+
function dfs(u: number, time: number, value: number): void {
104+
// 索引0为终点
105+
if (!u) {
106+
ans = Math.max(value, ans);
107+
}
108+
for (let [v, dist] of g[u]) {
109+
if (time - dist >= 0) {
110+
if (!visited[v]) {
111+
visited[v] = true;
112+
dfs(v, time - dist, value + values[v]);
113+
visited[v] = false; // 回溯
114+
} else {
115+
dfs(v, time - dist, value);
116+
}
117+
}
118+
}
119+
}
120+
121+
// 索引0为起点
122+
visited[0] = true;
123+
dfs(0, maxTime, values[0]);
124+
125+
return ans;
126+
};
127+
```
128+
89129
### **...**
90130

91131
```
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
function maximalPathQuality(values: number[], edges: number[][], maxTime: number): number {
2+
const n = values.length;
3+
let g: Array<Array<Array<number>>> = Array.from({ length: n }, v => new Array());
4+
for (let edge of edges) {
5+
let [u, v, t] = edge;
6+
g[u].push([v, t]);
7+
g[v].push([u, t]);
8+
}
9+
let visited = new Array(n).fill(false);
10+
let ans = 0;
11+
12+
function dfs(u: number, time: number, value: number): void {
13+
// 索引0为终点
14+
if (!u) {
15+
ans = Math.max(value, ans);
16+
}
17+
for (let [v, dist] of g[u]) {
18+
if (time - dist >= 0) {
19+
if (!visited[v]) {
20+
visited[v] = true;
21+
dfs(v, time - dist, value + values[v]);
22+
visited[v] = false; // 回溯
23+
} else {
24+
dfs(v, time - dist, value);
25+
}
26+
}
27+
}
28+
}
29+
30+
// 索引0为起点
31+
visited[0] = true;
32+
dfs(0, maxTime, values[0]);
33+
34+
return ans;
35+
};

0 commit comments

Comments
(0)

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