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 eef5794

Browse files
feat: add solutions to lc problem: No.0368 (doocs#4330)
1 parent b81ce02 commit eef5794

File tree

5 files changed

+212
-3
lines changed

5 files changed

+212
-3
lines changed

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

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ class Solution {
141141
class Solution {
142142
public:
143143
vector<int> largestDivisibleSubset(vector<int>& nums) {
144-
sort(nums.begin(), nums.end());
144+
ranges::sort(nums);
145145
int n = nums.size();
146146
int f[n];
147147
int k = 0;
@@ -201,6 +201,79 @@ 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+
238+
#### Rust
239+
240+
```rust
241+
impl Solution {
242+
pub fn largest_divisible_subset(nums: Vec<i32>) -> Vec<i32> {
243+
let mut nums = nums;
244+
nums.sort();
245+
246+
let n = nums.len();
247+
let mut f = vec![1; n];
248+
let mut k = 0;
249+
250+
for i in 0..n {
251+
for j in 0..i {
252+
if nums[i] % nums[j] == 0 {
253+
f[i] = f[i].max(f[j] + 1);
254+
}
255+
}
256+
if f[k] < f[i] {
257+
k = i;
258+
}
259+
}
260+
261+
let mut m = f[k];
262+
let mut ans = Vec::new();
263+
264+
for i in (0..=k).rev() {
265+
if nums[k] % nums[i] == 0 && f[i] == m {
266+
ans.push(nums[i]);
267+
k = i;
268+
m -= 1;
269+
}
270+
}
271+
272+
ans
273+
}
274+
}
275+
```
276+
204277
<!-- tabs:end -->
205278

206279
<!-- solution:end -->

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

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ class Solution {
129129
class Solution {
130130
public:
131131
vector<int> largestDivisibleSubset(vector<int>& nums) {
132-
sort(nums.begin(), nums.end());
132+
ranges::sort(nums);
133133
int n = nums.size();
134134
int f[n];
135135
int k = 0;
@@ -189,6 +189,79 @@ 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+
226+
#### Rust
227+
228+
```rust
229+
impl Solution {
230+
pub fn largest_divisible_subset(nums: Vec<i32>) -> Vec<i32> {
231+
let mut nums = nums;
232+
nums.sort();
233+
234+
let n = nums.len();
235+
let mut f = vec![1; n];
236+
let mut k = 0;
237+
238+
for i in 0..n {
239+
for j in 0..i {
240+
if nums[i] % nums[j] == 0 {
241+
f[i] = f[i].max(f[j] + 1);
242+
}
243+
}
244+
if f[k] < f[i] {
245+
k = i;
246+
}
247+
}
248+
249+
let mut m = f[k];
250+
let mut ans = Vec::new();
251+
252+
for i in (0..=k).rev() {
253+
if nums[k] % nums[i] == 0 && f[i] == m {
254+
ans.push(nums[i]);
255+
k = i;
256+
m -= 1;
257+
}
258+
}
259+
260+
ans
261+
}
262+
}
263+
```
264+
192265
<!-- tabs:end -->
193266

194267
<!-- solution:end -->

‎solution/0300-0399/0368.Largest Divisible Subset/Solution.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
class Solution {
22
public:
33
vector<int> largestDivisibleSubset(vector<int>& nums) {
4-
sort(nums.begin(), nums.end());
4+
ranges::sort(nums);
55
int n = nums.size();
66
int f[n];
77
int k = 0;
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
impl Solution {
2+
pub fn largest_divisible_subset(nums: Vec<i32>) -> Vec<i32> {
3+
let mut nums = nums;
4+
nums.sort();
5+
6+
let n = nums.len();
7+
let mut f = vec![1; n];
8+
let mut k = 0;
9+
10+
for i in 0..n {
11+
for j in 0..i {
12+
if nums[i] % nums[j] == 0 {
13+
f[i] = f[i].max(f[j] + 1);
14+
}
15+
}
16+
if f[k] < f[i] {
17+
k = i;
18+
}
19+
}
20+
21+
let mut m = f[k];
22+
let mut ans = Vec::new();
23+
24+
for i in (0..=k).rev() {
25+
if nums[k] % nums[i] == 0 && f[i] == m {
26+
ans.push(nums[i]);
27+
k = i;
28+
m -= 1;
29+
}
30+
}
31+
32+
ans
33+
}
34+
}
Lines changed: 29 additions & 0 deletions
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)

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