File tree 1 file changed +48
-0
lines changed 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public List<Integer> largestDivisibleSubset(int[] nums) {
3
+
4
+ List<Integer> subset = new ArrayList<>(nums.length);
5
+ int max = 1, len = nums.length-1, pre = -1;
6
+
7
+ if (nums.length == 0)
8
+ return subset;
9
+
10
+ if (nums.length == 1) {
11
+ subset.add(nums[0]);
12
+ return subset;
13
+ }
14
+
15
+ Arrays.sort(nums);
16
+
17
+ int[] dp = new int[nums.length];
18
+ for (int i = 0; i < nums.length; i++)
19
+ dp[i] = 1;
20
+
21
+ for (int i = 0; i < nums.length; i++) {
22
+ for (int j = 0; j < i; j++) {
23
+ if (nums[i]%nums[j] == 0) {
24
+ dp[i] = Math.max(dp[i], dp[j]+1);
25
+ max = Math.max(max,dp[i]);
26
+ }
27
+ }
28
+ }
29
+
30
+ while (max >= 1) {
31
+ if (pre == -1) {
32
+ if (dp[len] == max) {
33
+ subset.add(nums[len]);
34
+ pre = nums[len];
35
+ max--;
36
+ }
37
+ } else {
38
+ if (dp[len] == max && pre%nums[len] == 0) {
39
+ subset.add(nums[len]);
40
+ pre = nums[len];
41
+ max--;
42
+ }
43
+ }
44
+ len--;
45
+ }
46
+ return subset;
47
+ }
48
+ }
You can’t perform that action at this time.
0 commit comments