这里有leetcode题集分类整理!!!
AC代码:
class Solution {
public List<Integer> largestDivisibleSubset(int[] nums) {
int n = nums.length;
Arrays.sort(nums);
int [] dp = new int[n];
Arrays.fill(dp, 1);
dp[0] = 1;
int maxVal = nums[0];
int maxSize = 1;
for(int i = 1 ; i < n ; i ++) {
for (int j = 0 ; j < i ; j ++) {
if (nums[i] % nums[j] == 0) {
dp[i] = Math.max(dp[i], dp[j] + 1);
}
}
if (dp[i] > maxSize) {
maxVal = nums[i];
maxSize = dp[i];
}
}
List list = new ArrayList();
if (maxSize == 1) {
list.add(nums[0]);
return list;
}
for (int i = n - 1 ; i >= 0 ; i --) {
if (dp[i] == maxSize && maxVal % nums[i] == 0) {
list.add(nums[i]);
maxSize -- ;
maxVal = nums[i];
}
}
return list;
}
}