Skip to content

Commit 3df144f

Browse files
authored
feat: add typescript solution to lc problem: No.2092 (doocs#620)
* Add typescript solution to lc problem: No.2092. Find All People With Secret * insert typescript code block into template
1 parent dcf01b5 commit 3df144f

File tree

5 files changed

+168
-0
lines changed

5 files changed

+168
-0
lines changed

solution/2000-2099/2092.Find All People With Secret/README.md

+53
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,59 @@
101101

102102
```
103103

104+
### **TypeScript**
105+
106+
```ts
107+
function findAllPeople(n: number, meetings: number[][], firstPerson: number): number[] {
108+
let parent: Array<number> = Array.from({ length: n + 1 }, (v, i) => i);
109+
parent[firstPerson] = 0;
110+
111+
function findParent (index: number): number {
112+
if (parent[index] != index) parent[index] = findParent(parent[index]);
113+
return parent[index];
114+
}
115+
116+
let map = new Map<number, Array<Array<number>>>();
117+
for (let meeting of meetings) {
118+
const time = meeting[2];
119+
let members: Array<Array<number>> = map.get(time) || new Array();
120+
members.push(meeting);
121+
map.set(time, members);
122+
}
123+
const times = [...map.keys()].sort((a, b) => a - b);
124+
for (let time of times) {
125+
// round 1
126+
for (let meeting of map.get(time)) {
127+
let [a, b] = meeting;
128+
if (!parent[findParent(a)] || !parent[findParent(b)]) {
129+
parent[findParent(a)] = 0;
130+
parent[findParent(b)] = 0;
131+
}
132+
parent[findParent(a)] = parent[findParent(b)];
133+
}
134+
// round 2
135+
for (let meeting of map.get(time)) {
136+
let [a, b] = meeting;
137+
if (!parent[findParent(a)] || !parent[findParent(b)]) {
138+
parent[findParent(a)] = 0;
139+
parent[findParent(b)] = 0;
140+
} else {
141+
parent[a] = a;
142+
parent[b] = b;
143+
}
144+
}
145+
}
146+
147+
let ans = new Array<number>();
148+
for (let i = 0 ; i <= n; i++) {
149+
if (!parent[findParent(i)]) {
150+
ans.push(i);
151+
}
152+
}
153+
return ans;
154+
};
155+
```
156+
104157
### **...**
105158

106159
```

solution/2000-2099/2092.Find All People With Secret/README_EN.md

+53
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,59 @@ Thus, people 0, 1, 2, and 3 know the secret after all the meetings.
9191

9292
```
9393

94+
### **TypeScript**
95+
96+
```ts
97+
function findAllPeople(n: number, meetings: number[][], firstPerson: number): number[] {
98+
let parent: Array<number> = Array.from({ length: n + 1 }, (v, i) => i);
99+
parent[firstPerson] = 0;
100+
101+
function findParent (index: number): number {
102+
if (parent[index] != index) parent[index] = findParent(parent[index]);
103+
return parent[index];
104+
}
105+
106+
let map = new Map<number, Array<Array<number>>>();
107+
for (let meeting of meetings) {
108+
const time = meeting[2];
109+
let members: Array<Array<number>> = map.get(time) || new Array();
110+
members.push(meeting);
111+
map.set(time, members);
112+
}
113+
const times = [...map.keys()].sort((a, b) => a - b);
114+
for (let time of times) {
115+
// round 1
116+
for (let meeting of map.get(time)) {
117+
let [a, b] = meeting;
118+
if (!parent[findParent(a)] || !parent[findParent(b)]) {
119+
parent[findParent(a)] = 0;
120+
parent[findParent(b)] = 0;
121+
}
122+
parent[findParent(a)] = parent[findParent(b)];
123+
}
124+
// round 2
125+
for (let meeting of map.get(time)) {
126+
let [a, b] = meeting;
127+
if (!parent[findParent(a)] || !parent[findParent(b)]) {
128+
parent[findParent(a)] = 0;
129+
parent[findParent(b)] = 0;
130+
} else {
131+
parent[a] = a;
132+
parent[b] = b;
133+
}
134+
}
135+
}
136+
137+
let ans = new Array<number>();
138+
for (let i = 0 ; i <= n; i++) {
139+
if (!parent[findParent(i)]) {
140+
ans.push(i);
141+
}
142+
}
143+
return ans;
144+
};
145+
```
146+
94147
### **...**
95148

96149
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
function findAllPeople(n: number, meetings: number[][], firstPerson: number): number[] {
2+
let parent: Array<number> = Array.from({ length: n + 1 }, (v, i) => i);
3+
parent[firstPerson] = 0;
4+
5+
function findParent (index: number): number {
6+
if (parent[index] != index) parent[index] = findParent(parent[index]);
7+
return parent[index];
8+
}
9+
10+
let map = new Map<number, Array<Array<number>>>();
11+
for (let meeting of meetings) {
12+
const time = meeting[2];
13+
let members: Array<Array<number>> = map.get(time) || new Array();
14+
members.push(meeting);
15+
map.set(time, members);
16+
}
17+
const times = [...map.keys()].sort((a, b) => a - b);
18+
for (let time of times) {
19+
// round 1
20+
for (let meeting of map.get(time)) {
21+
let [a, b] = meeting;
22+
if (!parent[findParent(a)] || !parent[findParent(b)]) {
23+
parent[findParent(a)] = 0;
24+
parent[findParent(b)] = 0;
25+
}
26+
parent[findParent(a)] = parent[findParent(b)];
27+
}
28+
// round 2
29+
for (let meeting of map.get(time)) {
30+
let [a, b] = meeting;
31+
if (!parent[findParent(a)] || !parent[findParent(b)]) {
32+
parent[findParent(a)] = 0;
33+
parent[findParent(b)] = 0;
34+
} else {
35+
parent[a] = a;
36+
parent[b] = b;
37+
}
38+
}
39+
}
40+
41+
let ans = new Array<number>();
42+
for (let i = 0 ; i <= n; i++) {
43+
if (!parent[findParent(i)]) {
44+
ans.push(i);
45+
}
46+
}
47+
return ans;
48+
};

solution/problem_readme_template.md

+8
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,14 @@
3030

3131
```
3232

33+
### **TypeScript**
34+
35+
<!-- 这里可写当前语言的特殊实现逻辑 -->
36+
37+
```ts
38+
39+
```
40+
3341
### **...**
3442

3543
```

solution/problem_readme_template_en.md

+6
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@
2222

2323
```
2424

25+
### **TypeScript**
26+
27+
```ts
28+
29+
```
30+
2531
### **...**
2632

2733
```

0 commit comments

Comments
 (0)