Skip to content

Commit 67e1821

Browse files
authored
Add TypeScript solution for Largest Divisible Subset
1 parent eacc29a commit 67e1821

File tree

3 files changed

+97
-0
lines changed

3 files changed

+97
-0
lines changed

solution/0300-0399/0368.Largest Divisible Subset/README.md

+34
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,40 @@ func largestDivisibleSubset(nums []int) (ans []int) {
201201
}
202202
```
203203

204+
#### TypeScript
205+
206+
```ts
207+
function largestDivisibleSubset(nums: number[]): number[] {
208+
nums.sort((a, b) => a - b);
209+
const n = nums.length;
210+
const f: number[] = Array(n).fill(1);
211+
let k = 0;
212+
213+
for (let i = 0; i < n; ++i) {
214+
for (let j = 0; j < i; ++j) {
215+
if (nums[i] % nums[j] === 0) {
216+
f[i] = Math.max(f[i], f[j] + 1);
217+
}
218+
}
219+
if (f[k] < f[i]) {
220+
k = i;
221+
}
222+
}
223+
224+
let m = f[k];
225+
const ans: number[] = [];
226+
for (let i = k; m > 0; --i) {
227+
if (nums[k] % nums[i] === 0 && f[i] === m) {
228+
ans.push(nums[i]);
229+
k = i;
230+
--m;
231+
}
232+
}
233+
234+
return ans;
235+
}
236+
```
237+
204238
<!-- tabs:end -->
205239

206240
<!-- solution:end -->

solution/0300-0399/0368.Largest Divisible Subset/README_EN.md

+34
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,40 @@ func largestDivisibleSubset(nums []int) (ans []int) {
189189
}
190190
```
191191

192+
#### TypeScript
193+
194+
```ts
195+
function largestDivisibleSubset(nums: number[]): number[] {
196+
nums.sort((a, b) => a - b);
197+
const n = nums.length;
198+
const f: number[] = Array(n).fill(1);
199+
let k = 0;
200+
201+
for (let i = 0; i < n; ++i) {
202+
for (let j = 0; j < i; ++j) {
203+
if (nums[i] % nums[j] === 0) {
204+
f[i] = Math.max(f[i], f[j] + 1);
205+
}
206+
}
207+
if (f[k] < f[i]) {
208+
k = i;
209+
}
210+
}
211+
212+
let m = f[k];
213+
const ans: number[] = [];
214+
for (let i = k; m > 0; --i) {
215+
if (nums[k] % nums[i] === 0 && f[i] === m) {
216+
ans.push(nums[i]);
217+
k = i;
218+
--m;
219+
}
220+
}
221+
222+
return ans;
223+
}
224+
```
225+
192226
<!-- tabs:end -->
193227

194228
<!-- solution:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
function largestDivisibleSubset(nums: number[]): number[] {
2+
nums.sort((a, b) => a - b);
3+
const n = nums.length;
4+
const f: number[] = Array(n).fill(1);
5+
let k = 0;
6+
7+
for (let i = 0; i < n; ++i) {
8+
for (let j = 0; j < i; ++j) {
9+
if (nums[i] % nums[j] === 0) {
10+
f[i] = Math.max(f[i], f[j] + 1);
11+
}
12+
}
13+
if (f[k] < f[i]) {
14+
k = i;
15+
}
16+
}
17+
18+
let m = f[k];
19+
const ans: number[] = [];
20+
for (let i = k; m > 0; --i) {
21+
if (nums[k] % nums[i] === 0 && f[i] === m) {
22+
ans.push(nums[i]);
23+
k = i;
24+
--m;
25+
}
26+
}
27+
28+
return ans;
29+
}

0 commit comments

Comments
 (0)