※ 引述 《Rushia (みけねこ的鼻屎)》 之铭言:
:
: https://leetcode.com/problems/largest-divisible-subset/description
: 368. Largest Divisible Subset
: 给你一个阵列nums,找出由他的元素组成的最大子集合,所有元素满足
: nums[i] % nums[j] == 0 or nums[j] % nums[i] == 0,如果有多个解返回任意一个。
我的解法是n^2
先sort一下
用阵列的阵列当dp的东西
每次都会回头找能够整除的元素
然后找到拥有最长的阵列的元素
加上去
对每个元素做同样的事
接着再找最长的那个就是答案了
其实好像可以边找边做
这题有更快的解法吗
像是利用lis最长子字串的方法做
但是因为他是看能不能整除
所以好像不太可以?
姆咪
```cpp
class Solution {
public:
vector<int> largestDivisibleSubset(vector<int>& nums)
{
sort(nums.begin() , nums.end() , less());
int len = nums.size();
vector<int> res ;
vector<vector<int>> cnt(len , vector<int>());
for(int i = 0 ; i < len ; i ++)
{
int icnt = 1;
int ij = 0;
for(int j = i-1 ; j >= 0 ; j