leetcode.368. Largest Divisible Subset
2016-07-10 16:59
134 查看
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:
Example 2:
class Solution {
public:
vector<int> largestDivisibleSubset(vector<int>& nums) {
int i,j,len=nums.size(),m=0,mi;
vector<int> T(len,0);
vector<int> son(len,0);
sort(nums.begin(),nums.end());
for(i=0;i<len;i++){
for(j=i;j>=0;j--)
{
if(nums[i]%nums[j]==0&&T[j]+1>T[i]){
T[i]=T[j]+1;
son[i]=j;
}
}
if(T[i]>m){
m=T[i];
mi=i;
}
}
vector<int> re;
for(i=0;i<m;i++){
re.insert(re.begin(),nums[mi]);
mi=son[mi];
}
return re;
}
};
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]
class Solution {
public:
vector<int> largestDivisibleSubset(vector<int>& nums) {
int i,j,len=nums.size(),m=0,mi;
vector<int> T(len,0);
vector<int> son(len,0);
sort(nums.begin(),nums.end());
for(i=0;i<len;i++){
for(j=i;j>=0;j--)
{
if(nums[i]%nums[j]==0&&T[j]+1>T[i]){
T[i]=T[j]+1;
son[i]=j;
}
}
if(T[i]>m){
m=T[i];
mi=i;
}
}
vector<int> re;
for(i=0;i<m;i++){
re.insert(re.begin(),nums[mi]);
mi=son[mi];
}
return re;
}
};
相关文章推荐
- 开源项目管理当中最为常见的十类糟糕实践
- 【PHP面向对象(OOP)编程入门教程】12.重载新的方法(parent::)
- 【PHP面向对象(OOP)编程入门教程】11.类的继承
- C语言标准库函数qsort排序的介绍与使用
- Session和cookie的区别(进行对比)
- 希尔排序
- 整数中1出现的次数(从1到n整数中1出现的次数)
- 【PHP面向对象(OOP)编程入门教程】10.__set(),__get(),__isset(),__unset()四个方法的应用
- 探究绑定事件的this指向以及event传参的小问题
- jQuery.ajax()
- leetcode 373 Find K Pairs with Smallest Sums java
- SQL Server中将日期转换成字符串
- WebView的简单使用
- 回弹效果HorizontalScrollview
- 递归
- μCOS/II v2.85内核OSSemPend()和OSSemPost()函数工作原理
- Ncs
- 排序复杂度分析
- html初学1
- js中的运算符优先级顺序