public static List<Integer> largestDivisibleSubset(int[] nums) {
List<Integer> res=new LinkedList<Integer>();
if(nums.length==0)return res;
int[] dp=new int[nums.length];
int[] pre=new int[nums.length];
Arrays.sort(nums);
for(int i=0;i<nums.length;i++){
dp[i]=1;
pre[i]=i;
}
for(int i=0;i<nums.length;i++){
for(int j=0;j<i;j++){
if(nums[i]%nums[j]==0&&dp[i]<dp[j]+1){
dp[i]=dp[j]+1;
pre[i]=j;
}
}
}
int max=0,index=0;
for(int i=0;i<nums.length;i++)
if(max<dp[i]){
max=dp[i];
index=i;
}
int index1;
do{
index1=index;
res.add(nums[index]);
index=pre[index];
}while(index!=index1);
Collections.reverse(res);
return res;
}
Largest Divisible Subset
最新推荐文章于 2019-12-16 17:09:44 发布