题目描述
给出一个由无重复的正整数组成的集合,找出其中最大的整除子集,子集中任意一对 (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]
思路
代码
class Solution:
def largestDivisibleSubset(self,nums):
nums = sorted(nums)
dp = [[x] for x in nums]
maxseq = []
for i in range(len(nums)):
for j in range(i):
if nums[i]%nums[j] == 0 and len(dp[j])+1 > len(dp[i]):
dp[i] = dp[j] + nums[i:i+1]
if len(dp[i])>len(maxseq):
maxseq = dp[i]
return maxseq
test = Solution()
test.largestDivisibleSubset([1,2,3])
效果

本文介绍了一种算法,用于从无重复正整数集合中找出最大整除子集,子集中任意两个元素都能整除对方。通过示例展示了算法的具体实现与效果。
1003





