题目:
给你一个由 无重复 正整数组成的集合 nums ,请你找出并返回其中最大的整除子集 answer ,子集中每一元素对 (answer[i], answer[j]) 都应当满足:
answer[i] % answer[j] == 0 ,或
answer[j] % answer[i] == 0
如果存在多个有效解子集,返回其中任何一个均可。
解答:
class Solution:
def largestDivisibleSubset(self, nums: List[int]) -> List[int]:
nums.sort()
#f[i]记录nums[:i+1]的最大整除子集
f=[[x] for x in nums]
n=len(nums)
for j in range(n):
for i in range(j):
#若len(f[i])+1==len(f[j]),则len(f[j])不会变大,于结果无意义
if nums[j]%nums[i]==0 and len(f[i])+1>len(f[j]):
f[j]=f[i]+[nums[j]]
return max(f,key=len)