Largest Divisible Subset问题及解法
来源:互联网 发布:2016嘉兴菜鸟网络招聘 编辑:程序博客网 时间:2024/06/08 08:50
问题描述:
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.
示例:
nums: [1,2,3]Result: [1,2] (of course, [1,3] will also be ok)
nums: [1,2,4,8]Result: [1,2,4,8]
问题分析:
题目要求最长的子集和,于是我们可以设置一个长度的转移数组T,对于升序排序的数组nums来讲,T[i] = max(T[i],1+T[j]),T[i]表示以nums[i]为最大元素的子集和长度。这里还有一个小技巧就是记录了最长子集和元素之间的前后关系(pre数组)。
过程详见代码:
class Solution {public:vector<int> largestDivisibleSubset(vector<int>& nums) {sort(nums.begin(), nums.end());vector<int> T(nums.size(), 1);vector<int> pre(nums.size(), 0);int m = 0;int mi = 0;for (int i = 0; i < nums.size(); ++i){for (int j = i - 1; j >= 0; --j){if (nums[i] % nums[j] == 0 && T[i] < 1 + T[j]){T[i] = 1 + T[j];pre[i] = j;}}if (T[i] > m){m = T[i];mi = i;}}vector<int> ret;for (int i = 0; i < m; ++i){ret.push_back(nums[mi]);mi = pre[mi];}return ret;}};
阅读全文
0 0
- Largest Divisible Subset问题及解法
- LeetCode368. Largest Divisible Subset易懂的解法
- Largest Divisible Subset
- 【Leetcode】Largest Divisible Subset
- Largest Divisible Subset
- Largest Divisible Subset
- Largest Divisible Subset
- leetcode368. Largest Divisible Subset
- 368. Largest Divisible Subset
- 368. Largest Divisible Subset
- 368. Largest Divisible Subset
- Largest Divisible Subset
- 【Leetcode】Largest Divisible Subset
- Largest Divisible Subset
- <LeetCode>Largest Divisible Subset
- 368. Largest Divisible Subset
- 368. Largest Divisible Subset
- 368. Largest Divisible Subset
- spring-boot处理跨域
- Java 字符串拼接效率分析及最佳实践
- android studio 编译时注解(三) 打造注入框架
- conv优化
- 前后端分离
- Largest Divisible Subset问题及解法
- Vdiscover代码笔记
- 数据结构实验之栈与队列三:后缀式求值
- 出错的问题
- 正则
- SQL的优化
- ShaderWeaver使用教程-水中倒影
- Android 线程间通信------handler
- ThinkPHP中在调用js文件中使用U方法和已配置路径问题