zoukankan      html  css  js  c++  java
  • 368 Largest Divisible Subset 最大整除子集

    给出一个由无重复的正整数组成的集合, 找出其中最大的整除子集, 子集中任意一对 (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]
    详见:https://leetcode.com/problems/largest-divisible-subset/description/

    C++:

    class Solution {
    public:
        vector<int> largestDivisibleSubset(vector<int>& nums) 
        {
            sort(nums.begin(), nums.end());
            vector<int> dp(nums.size(), 0), parent(nums.size(), 0), res;
            int mx = 0, mx_idx = 0;
            for (int i = nums.size() - 1; i >= 0; --i)
            {
                for (int j = i; j < nums.size(); ++j)
                {
                    if (nums[j] % nums[i] == 0 && dp[i] < dp[j] + 1)
                    {
                        dp[i] = dp[j] + 1;
                        parent[i] = j;
                        if (mx < dp[i])
                        {
                            mx = dp[i];
                            mx_idx = i;
                        }
                    }
                }
            }
            for (int i = 0; i < mx; ++i) 
            {
                res.push_back(nums[mx_idx]);
                mx_idx = parent[mx_idx];
            }
            return res;
        }
    };
    

     参考:https://www.cnblogs.com/grandyang/p/5625209.html

  • 相关阅读:
    SqlServer卡慢解决办法
    His表(简化)
    解决Oracle数据库空间不足问题
    获取select下拉框选中的的值
    使用编辑器Sublime
    Angularjs中的$filter
    Angularjs 的Controlleras 和$scope
    在html页面中实现代码的高亮显示
    Angularjs的ui-router
    TML5之Canvas
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8848033.html
Copyright © 2011-2022 走看看