Advertisement
kosievdmerwe

Untitled

Nov 14th, 2021
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.75 KB | None | 0 0
  1. class Solution:
  2.     def largestDivisibleSubset(self, nums: List[int]) -> List[int]:
  3.         N = len(nums)
  4.         nums.sort(reverse=True)
  5.        
  6.         parents = [None] * N
  7.         for i in range(N):
  8.             best = (None, 0)
  9.             for j in range(i):
  10.                 if nums[j] % nums[i] != 0:
  11.                     continue
  12.                 if parents[j][2] + 1 > best[1]:
  13.                     best = (j, parents[j][2] + 1)
  14.             parents[i] = (i, best[0], best[1])
  15.        
  16.         longest = max(parents, key=lambda p: p[2])
  17.        
  18.         ans = []
  19.         while True:
  20.             ans.append(nums[longest[0]])
  21.             if longest[1] is None:
  22.                 break
  23.             longest = parents[longest[1]]
  24.         return ans
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement