好困啊 拖到现在才来写 今天要做的事情又没完成 真的很废
想做的很多 能做的太少
要居安思危 要为自己想去的地方努力啊
题目
https://leetcode-cn.com/problems/largest-divisible-subset/
思路
dp[i] 表示在输入数组nums 升序排列的前提下,以]nums[i] 为最大整数的「整除子集」的大小
代码
class Solution {
public List<Integer> largestDivisibleSubset(int[] nums) {
int len=nums.length;
if(len==0)
return new ArrayList<Integer>();
if(len==1){
ArrayList<Integer> list=new ArrayList<>();
list.add(nums[0]);
return list;
}
Arrays.sort(nums);
int[] dp=new int[len];
Arrays.fill(dp,1);
int maxSize=1;
int maxNum=nums[0];
for(int i=1;i<len;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){
maxSize=dp[i];
maxNum=nums[i];
}
}
}
ArrayList<Integer> res=new ArrayList<>();
if(maxSize==1){
res.add(maxNum);
return res;
}
for(int i=len-1;i>=0&&maxSize>=0;i--){
if(dp[i]==maxSize&&maxNum%nums[i]==0){
res.add(nums[i]);
maxSize--;
maxNum=nums[i];
}
}
return res;
}
}