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 3df144f

Browse files
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‎

Lines changed: 53 additions & 0 deletions
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‎

Lines changed: 53 additions & 0 deletions
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
```
Lines changed: 48 additions & 0 deletions
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‎

Lines changed: 8 additions & 0 deletions
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‎

Lines changed: 6 additions & 0 deletions
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)

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