class Solution {
public:
vector<int> largestDivisibleSubset(vector<int>& nums) {
vector<int> dp(nums.size(),0); //dp[i] 代表 nums[i]在nums里面能够整除的数字个数 1,2,3, 里面 dp[2]代表index=2的数 3 能够整数的数有1个;
vector<int> idx(nums.size(),0); //记录每个索引
if(nums.empty())return vector<int>();
sort(nums.begin(),nums.end()); //小到大排序
int imax=0,index=-1;
dp[0]=1;
for(int i=0;i<nums.size();++i)
{
dp[i]=1; //重要, 每个数i能被自己整除, 所以初始化为1
idx[i]=-1; //重要, 每个i位置上的索引初始化为-1代表没有被选中, 不赋值导致下面死循环
for(int j=i-1;j>=0;--j)
{
if(nums[i]%nums[j]==0) // 判断 i/j 是否整除
{
if(1+dp[j]>dp[i]) //循环1到j 找出 dp [1->j]里面最大的数
{
dp[i]=dp[j]+1; //既然j能整除的数字有dp[j]个, 而i又能整除j, 毫无疑问i也能整除j能整除的所有数字, dp[i]=dp[j]+1
idx[i]=j; //更新索引为j, 可能有很多个符合条件的j, 这里只能记录第一个
}
}
}
if(dp[i]>imax) //imax记录目前为止dpi的最大值
{
imax=dp[i];
index=i;
}
}
vector<int> r;
while(index!=-1) //循环完后index是最后一个要被加入结果集的索引
{
r.push_back(nums[index]);
index=idx[index]; //相当于从后面往前面遍历
}
return r;
}
};

  

368. Largest Divisible Subset的更多相关文章

  1. Leetcode 368. Largest Divisible Subset

    Given a set of distinct positive integers, find the largest subset such that every pair (Si, Sj) of ...

  2. 368. Largest Divisible Subset -- 找出一个数组使得数组内的数能够两两整除

    Given a set of distinct positive integers, find the largest subset such that every pair (Si, Sj) of ...

  3. 【leetcode】368. Largest Divisible Subset

    题目描述: Given a set of distinct positive integers, find the largest subset such that every pair (Si, S ...

  4. 【LeetCode】368. Largest Divisible Subset 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/largest-d ...

  5. 368 Largest Divisible Subset 最大整除子集

    给出一个由无重复的正整数组成的集合, 找出其中最大的整除子集, 子集中任意一对 (Si, Sj) 都要满足: Si % Sj = 0 或 Sj % Si = 0.如果有多个目标子集,返回其中任何一个均 ...

  6. LeetCode "Largest Divisible Subset" !

    Very nice DP problem. The key fact of a mutual-divisible subset: if a new number n, is divisible wit ...

  7. [LeetCode] Largest Divisible Subset 最大可整除的子集合

    Given a set of distinct positive integers, find the largest subset such that every pair (Si, Sj) of ...

  8. Largest Divisible Subset

    Given a set of distinct positive integers, find the largest subset such that every pair (Si, Sj) of ...

  9. [Swift]LeetCode368. 最大整除子集 | Largest Divisible Subset

    Given a set of distinct positive integers, find the largest subset such that every pair (Si, Sj) of ...

随机推荐

  1. CentOS-7-1804下MySQL安装及防火墙设置

    第一步,下载MySQL Linux 版本安装包,这里使用 这个版本. 第二步,上传安装包到Linux系统中. 第三步,解压安装包 tar -zxvf mysql--linux-glibc2.-x86_ ...

  2. 关于Opengl投影矩阵

    读 http://www.songho.ca/opengl/gl_projectionmatrix.html 0.投影矩阵的功能: 将眼睛空间中的坐标点 [图A的视椎体]     映射到     一个 ...

  3. FreeType使用的总结

    http://www.cppblog.com/liangairan/archive/2016/09/11/214270.html 这里说一下Freetype的关键点,比较基础的在很多文章已经有说明,这 ...

  4. tp5.0中使用PHPexcel,以及Loader的一些问题

    在5.0中使用PHPexcel遇到一些问题,记录一下方便以后查看. 非使用PHPexcel的方法: 参考:http://blog.csdn.net/sinat_35861727/article/det ...

  5. JAVA 平时作业一

    public class Print { public static void main (String arg[]) { for(int i=0;i<16;i++) { for(int j=0 ...

  6. IntelliJ IDEA及maven、git下载与配置

    maven下载地址:http://maven.apache.org/download.cgi,下载bin文件然后解压 maven环境变量配置: MAVEN_HOME:D:  \install\apac ...

  7. css a的伪类顺序

    a:link {color: #FF0000} /* 未访问的链接 */ a:visited {color: #00FF00} /* 已访问的链接 */ a:hover {color: #FF00FF ...

  8. 查询数据库:models.Books.objects.all()[10: 20]与models.Books.objects.filter(id__gt=10, id__lt=20).values() 的区别

    1. models.Books.objects.all()[10: 20] (10:20  之间是冒号,不是逗号.)查出的是 QuerySet对象,如需进行操作,得进一步进行剥皮. 查询代码: 查询结 ...

  9. git 命令提交项目到github

    git 命令提交项目到github步骤如下: 1.使用git 命令客户端进入项目根路径,输入 git init  命令,创建github本地根目录 2.把文件加入到本地项目 git add .  ,如 ...

  10. cf A Simple Task---线段树

    Examples Input 10 5abacdabcda7 10 05 8 11 4 03 6 07 10 1 Output cbcaaaabdd Input 10 1agjucbvdfk1 10 ...