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 b1c2f99

Browse files
authored
feat: add js solution to lc problem: No.1562 (doocs#3251)
1 parent 52ea485 commit b1c2f99

File tree

3 files changed

+142
-0
lines changed

3 files changed

+142
-0
lines changed

‎solution/1500-1599/1562.Find Latest Group of Size M/README.md‎

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,55 @@ func findLatestStep(arr []int, m int) int {
289289
}
290290
```
291291

292+
#### JavaScript
293+
294+
```js
295+
const findLatestStep = function (arr, m) {
296+
function find(x) {
297+
if (p[x] !== x) {
298+
p[x] = find(p[x]);
299+
}
300+
return p[x];
301+
}
302+
303+
function union(a, b) {
304+
const pa = find(a);
305+
const pb = find(b);
306+
if (pa === pb) {
307+
return;
308+
}
309+
p[pa] = pb;
310+
size[pb] += size[pa];
311+
}
312+
313+
const n = arr.length;
314+
if (m === n) {
315+
return n;
316+
}
317+
const vis = Array(n).fill(false);
318+
const p = Array.from({ length: n }, (_, i) => i);
319+
const size = Array(n).fill(1);
320+
let ans = -1;
321+
for (let i = 0; i < n; ++i) {
322+
const v = arr[i] - 1;
323+
if (v > 0 && vis[v - 1]) {
324+
if (size[find(v - 1)] === m) {
325+
ans = i;
326+
}
327+
union(v, v - 1);
328+
}
329+
if (v < n - 1 && vis[v + 1]) {
330+
if (size[find(v + 1)] === m) {
331+
ans = i;
332+
}
333+
union(v, v + 1);
334+
}
335+
vis[v] = true;
336+
}
337+
return ans;
338+
};
339+
```
340+
292341
<!-- tabs:end -->
293342

294343
<!-- solution:end -->

‎solution/1500-1599/1562.Find Latest Group of Size M/README_EN.md‎

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,55 @@ func findLatestStep(arr []int, m int) int {
269269
}
270270
```
271271

272+
#### JavaScript
273+
274+
```js
275+
const findLatestStep = function (arr, m) {
276+
function find(x) {
277+
if (p[x] !== x) {
278+
p[x] = find(p[x]);
279+
}
280+
return p[x];
281+
}
282+
283+
function union(a, b) {
284+
const pa = find(a);
285+
const pb = find(b);
286+
if (pa === pb) {
287+
return;
288+
}
289+
p[pa] = pb;
290+
size[pb] += size[pa];
291+
}
292+
293+
const n = arr.length;
294+
if (m === n) {
295+
return n;
296+
}
297+
const vis = Array(n).fill(false);
298+
const p = Array.from({ length: n }, (_, i) => i);
299+
const size = Array(n).fill(1);
300+
let ans = -1;
301+
for (let i = 0; i < n; ++i) {
302+
const v = arr[i] - 1;
303+
if (v > 0 && vis[v - 1]) {
304+
if (size[find(v - 1)] === m) {
305+
ans = i;
306+
}
307+
union(v, v - 1);
308+
}
309+
if (v < n - 1 && vis[v + 1]) {
310+
if (size[find(v + 1)] === m) {
311+
ans = i;
312+
}
313+
union(v, v + 1);
314+
}
315+
vis[v] = true;
316+
}
317+
return ans;
318+
};
319+
```
320+
272321
<!-- tabs:end -->
273322

274323
<!-- solution:end -->
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
const findLatestStep = function (arr, m) {
2+
function find(x) {
3+
if (p[x] !== x) {
4+
p[x] = find(p[x]);
5+
}
6+
return p[x];
7+
}
8+
9+
function union(a, b) {
10+
const pa = find(a);
11+
const pb = find(b);
12+
if (pa === pb) {
13+
return;
14+
}
15+
p[pa] = pb;
16+
size[pb] += size[pa];
17+
}
18+
19+
const n = arr.length;
20+
if (m === n) {
21+
return n;
22+
}
23+
const vis = Array(n).fill(false);
24+
const p = Array.from({ length: n }, (_, i) => i);
25+
const size = Array(n).fill(1);
26+
let ans = -1;
27+
for (let i = 0; i < n; ++i) {
28+
const v = arr[i] - 1;
29+
if (v > 0 && vis[v - 1]) {
30+
if (size[find(v - 1)] === m) {
31+
ans = i;
32+
}
33+
union(v, v - 1);
34+
}
35+
if (v < n - 1 && vis[v + 1]) {
36+
if (size[find(v + 1)] === m) {
37+
ans = i;
38+
}
39+
union(v, v + 1);
40+
}
41+
vis[v] = true;
42+
}
43+
return ans;
44+
};

0 commit comments

Comments
(0)

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