博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Largest Divisible Subset
阅读量:5341 次
发布时间:2019-06-15

本文共 1956 字,大约阅读时间需要 6 分钟。

Given a set of distinct positive integers, find the largest subset such that every pair (Si, Sj) of elements in this subset satisfies: Si % Sj = 0 or Sj % Si = 0.

If there are multiple solutions, return any subset is fine.

Example 1:

nums: [1,2,3]Result: [1,2] (of course, [1,3] will also be ok)

 

Example 2:

nums: [1,2,4,8]Result: [1,2,4,8] 分析:

思路: 将数组排序,然后用dp[i]表示从0到i最大的集合。为了得到dp[i]的值, 我们从i - 1 到 0 看是否 nums[i] % nums[j] ==0,  如果是,dp[i] = max(dp[i], dp[j]+1), 因为数组按照降序排序, 所以nums[j] < nums[i],并且之前能够被nums[j]整除的数, 也必然能够被 nums[i]整除。

1 public class Solution { 2     public List
largestDivisibleSubset(int[] nums) { 3 if (nums == null || nums.length == 0) return new ArrayList
(); 4 5 int n = nums.length; 6 Arrays.sort(nums); 7 int[] dp = new int[n]; 8 Arrays.fill(dp, 1); 9 int[] parent = new int[n];10 Arrays.fill(parent, -1);//当parent数组中某数为-1时,表示这个数自己是一个集合11 int max = 1, max_index = 0; 12 for (int i = 1; i < n; i++) { //calculate dp[i]13 for (int j = i - 1; j >= 0; j--) { //i > j14 if (nums[i] % nums[j] == 0 && dp[i] < dp[j] + 1) { //positive distinct numbers in num15 dp[i] = dp[j] + 1;16 parent[i] = j;17 if (dp[i] > max) {18 max = dp[i];19 max_index = i;20 }21 }22 }23 }24 return genResult(nums, parent, max_index);25 }26 27 public List
genResult(int[] nums, int[] parent, int max_index) {28 List
result = new ArrayList<>();29 int iter = max_index;30 while (iter != -1) {31 result.add(nums[iter]);32 iter = parent[iter];33 }34 return result;35 }36 }

 

转载于:https://www.cnblogs.com/beiyeqingteng/p/5728292.html

你可能感兴趣的文章
树形DP
查看>>
ASP.NET(VB.NET)网页中输出水晶报表
查看>>
poj 3342 树形dp
查看>>
有时我们需要调用一个函数时,返回多个不同类型的数据
查看>>
lock关键字只不过是C#提供的语法糖
查看>>
在后台中高效工作 – 后台任务
查看>>
Unity Editor(一)OnInspectorGUI的重写与面板的创建
查看>>
AXURE RP8 - 实战手册 网站和APP原型制作案例精粹
查看>>
《Linux权威指南》阅读笔记(4)
查看>>
Git出现提交错误--Push to origin/master was rejected(转)
查看>>
Javascript Math
查看>>
Tensorflow之tensorboard可视化
查看>>
Python基础(下)
查看>>
[转载] 史密斯夫妇
查看>>
CUDA gputimer.h头文件
查看>>
CentOS 6.5下Git服务器搭建
查看>>
Two Sum II - Input array is sorted
查看>>
ArcGIS AddIN开发异常之--修饰符“static”对该项无效
查看>>
6-2 S树 uva712
查看>>
【练习】多表查询
查看>>