• LeetCode 377 组合总数IV


    LeetCode 377 组合总数IV

    题目描述:
    给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。

    动态规划

    • 动态规划解法的设计(状态定义、状态转移)可以从递归解法开始
    • 在递归解法中,每一次从数组中任选一个数nums[i],则子问题是同样的nums下找到的和为taget-nums[i]的组合数量
    • 因此将状态定义为: dp[target] 表示nums中找到的和为target的组合数目
    • 状态转移为: dp[target] = 求和(0=<i<=nums.length) dp[target-nums[i]],其中nums[i]满足小于等于target

    执行用时:1 ms, 在所有 Java 提交中击败了99.68%的用户
    内存消耗:37.1 MB, 在所有 Java 提交中击败了28.93%的用户

    class Solution {
        public int combinationSum4(int[] nums, int target) {
            //DP[S]表示nums数组构成的和为S的组合个数
            //DP[S] = 求和 DP[S-nums[i]], num[i] <= S, 0=<i<nums.length
            int[] dp = new int[target+1];
            dp[0] = 1;
    
            /*递推*/
            for(int sum=1; sum<=target; sum++) {
                for(int curr=0; curr<nums.length; curr++) {
                    if(nums[curr]<=sum) {
                        dp[sum] += dp[sum-nums[curr]];
                    }
                }
            }
    
            return dp[target];
    
        }
    }
    
  • 相关阅读:
    android 图片全屏
    .9.png
    C++中的endl
    C++输入输出cin与cout
    word-search
    Java中的的画正三角方法
    octave中的一些基本操作
    C#中判断语句 if、if-else if、switch-case
    C#中的异常处理(try-catch的使用)——使程序更加稳定
    编程&blog处女篇-用C#求100以内的质数
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13575637.html
Copyright © 2020-2023  润新知