368 最大整除子集

2022-05-08 22:06:14 字數 1208 閱讀 3454

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

自己寫的,能過,但不是最優演算法。

思路是先排序,這樣可以用大的除小的。把每個數能整除的數存入雜湊表,之後遍歷到num時,尋找所有小於num-1的數x中滿足num%x==0的。取最大的那個,加上num本身作為dp[num]。

如[2,3,4,8,10],存為2:[2],3:[3],4:[2,4],8:[2,4,8],10:[2,4,8]。

做的時候也想到了上面解法的問題,即:存這麼多遍路徑沒什麼用,因為dp時比較的是路徑長度,很多路徑相當於白存了。

這種做法需要乙個記錄字首節點的陣列和乙個dp陣列。

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 思路 ...

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進行一下排序即可。需要輸出子集,那麼只要開...