给出一个由无重复的正整数组成的集合,找出其中最大的整除子集,子集中任意一对 (Si,Sj) 都要满足:Si % Sj = 0 或 Sj % Si = 0。
如果有多个目标子集,返回其中任何一个均可。
示例 1:
输入: [1,2,3]
输出: [1,2] (当然, [1,3] 也正确)
示例 2:
输入: [1,2,4,8]
输出: [1,2,4,8]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/largest-divisible-subset
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
如果只是求解最大整数子集的长度,那么这就是一道最简单的动态规划题目。但是这题目要求将最大整数子集的列表序列返回,因此就要一个动态数组path记录随dp数组变化的最终整数子集的索引(形式:path[索引] = 索引),或者使用List<List<Integeer>> ans这种链表中包含链表的形式随时记录更新的最大整数子集的集合。
数论:
给定升序序列(即 E < F < G)[E, F, G],并且该列表本身满足问题中描述的整除子集,就不必枚举该子集的所有数字,在以下两种情况:
推论一:可除以整除子集中的最大元素的任何值,加入到子集中,可以形