368. 最大整除子集
1 //最长上升子序列的变种 2 class Solution 3 { 4 public: 5 vector<int> largestDivisibleSubset(vector<int>& nums) 6 { 7 vector<int> ans;//保存结果 8 if(nums.size() == 0) return ans; 9 sort(nums.begin(),nums.end());//无重复+排序 = 严格单增 10 int n = nums.size(); 11 int res = INT_MIN; 12 vector<int> dp(n,1); 13 vector<int> index;//保存最大值的下标 14 for(int i = 0;i < n;i ++) 15 { 16 for(int j = 0;j < i;j ++) 17 { 18 if(dp[i] < dp[j] + 1 && nums[i] % nums[j] == 0) dp[i] = dp[j] + 1; 19 } 20 if(res < dp[i]) 21 { 22 res = dp[i]; 23 index.push_back(i); 24 } 25 } 26 for(auto a : index) ans.push_back(nums[a]); 27 return ans; 28 } 29 };
Mamba never out

浙公网安备 33010602011771号