Skip to content

Commit 07fbead

Browse files
committed
https://leetcode.cn/problems/array-nesting/
1 parent e1a6ed0 commit 07fbead

File tree

3 files changed

+40
-23
lines changed

3 files changed

+40
-23
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ leetcode 测试
1010

1111
##### 包含的内容如下
1212

13+
https://leetcode.cn/problems/array-nesting/
14+
1315
https://leetcode.cn/problems/super-ugly-number/
1416

1517
https://leetcode.cn/problems/ugly-number-iii/

array-nesting/index.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
export default function arrayNesting(nums: number[]): number {
2+
let ans = 0;
3+
const n = nums.length;
4+
const vis: boolean[] = new Array(n).fill(0);
5+
for (let i = 0; i < n; ++i) {
6+
let cnt = 0;
7+
while (!vis[i]) {
8+
vis[i] = true;
9+
i = nums[i];
10+
++cnt;
11+
}
12+
ans = Math.max(ans, cnt);
13+
}
14+
return ans;
15+
}

super-ugly-number/index.ts

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
export default function nthSuperUglyNumber(
2-
n: number,
3-
primes: number[]
4-
): number {
5-
const dp: number[] = new Array(n + 1).fill(0);
6-
const m = primes.length;
7-
const pointers: number[] = new Array(m).fill(0);
8-
const nums: number[] = new Array(m).fill(1);
9-
for (let i = 1; i <= n; i++) {
10-
let minNum = Number.MAX_SAFE_INTEGER;
11-
for (let j = 0; j < m; j++) {
12-
minNum = Math.min(minNum, nums[j]);
13-
}
14-
dp[i] = minNum;
15-
for (let j = 0; j < m; j++) {
16-
if (nums[j] == minNum) {
17-
pointers[j]++;
18-
nums[j] = dp[pointers[j]] * primes[j];
19-
}
20-
}
21-
}
22-
return dp[n];
23-
}
1+
export default function nthSuperUglyNumber(
2+
n: number,
3+
primes: number[],
4+
): number {
5+
const dp: number[] = new Array(n + 1).fill(0);
6+
const m = primes.length;
7+
const pointers: number[] = new Array(m).fill(0);
8+
const nums: number[] = new Array(m).fill(1);
9+
for (let i = 1; i <= n; i++) {
10+
let minNum = Number.MAX_SAFE_INTEGER;
11+
for (let j = 0; j < m; j++) {
12+
minNum = Math.min(minNum, nums[j]);
13+
}
14+
dp[i] = minNum;
15+
for (let j = 0; j < m; j++) {
16+
if (nums[j] == minNum) {
17+
pointers[j]++;
18+
nums[j] = dp[pointers[j]] * primes[j];
19+
}
20+
}
21+
}
22+
return dp[n];
23+
}

0 commit comments

Comments
 (0)