LeetCode 368 最大整除子集(DP)

2021-10-07 06:59:43 字數 1056 閱讀 7276

給出乙個由無重複正整數組成的集合,找出其中最大的整除子集,子集中任意一對 (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 300

class

solution

;sort

(nums.

begin()

, nums.

end())

;int i, j, n = nums.

size()

;int maxlen =

1, maxlenid =0;

vectorint,

int>>

dp(n)

;//到該位置的最大長度,前乙個idx

for(i =

0; i < n;

++i)

dp[i]

=make_pair(1

,-1)

;for

(i =

1; i < n;

++i)}if

(dp[i]

.first > maxlen)

} vector<

int>

ans(maxlen)

; ans[maxlen-1]

= nums[maxlenid]

;//最後乙個數字

for(i = maxlen-

2; i >=0;

--i)

return ans;}}

;

52 ms 8.7 mb

LeetCode368 最大整除子集

給出乙個由無重複的正整數組成的集合,找出其中最大的整除子集,子集中任意一對 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 368 最大整除子集

思路 其實和最長上公升子串行的思路基本一致。dp i 表示以nums i 結尾的最大的整數子集。dp i max dp j 1,dp i 其中nums j nums i 0 nums i nums j 0 為了避免6 2 4 這樣的序列出現,只需先對nums進行一下排序即可。需要輸出子集,那麼只要開...

368 最大整除子集

給出乙個由無重複的正整數組成的集合,找出其中最大的整除子集,子集中任意一對 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 思路 ...