給出乙個由無重複的正整數組成的集合,找出其中最大的整除子集,子集中任意一對 (si,sj) 都要滿足:si % sj = 0 或 sj % si = 0。
如果有多個目標子集,返回其中任何乙個均可。
示例 1:
輸入: [1,2,3]示例 2:輸出: [1,2] (當然, [1,3] 也正確)
輸入: [1,2,4,8]這道題和找最長子序列有點像!輸出: [1,2,4,8]
排序動態規劃找到最長的整除子集,但是要記錄前乙個數字置
舉個例子 [1,2,3]
我們用dp[i]記錄到i最長的整除子集長度,用pre[i]記錄到i前面乙個數的位置
很明顯dp[0] = 1 ,pre[0] = -1
當i = 1,有nums[1] % nums[0] == 0可以整除,如果dp[0] + 1 > dp[1],那麼pre[1] = 0,dp[1] = 2
當i = 2,也有有nums[2] % nums[0] == 0可以整除,那麼我們判斷i=2之前可以整除的,有nums[2] % nums[1] != 0,所以有nums[2] % nums[0] == 0能整除,有dp[0] + 1 > dp[2],
那麼pre[2] = 0,dp[1] = 2
接下來我們就取dp最大值,即最長的整除子集長度,再根據記錄的前面數的位置找出所有的數字
public listlargestdivisiblesubset(intnums)
}if (dp[i] >m)
}list
res = new arraylist<>();
for (int i = 0; i < m; i++)
return
res;
}}
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 思路 ...
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 然後可...