码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode(8)组合总和4(中等)

时间:2021-05-03 12:34:22      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:tar   tps   for   problems   返回   数组   i++   组合   不同   

题目描述:

给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。

题目数据保证答案符合 32 位整数范围。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/combination-sum-iv
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

代码;

public int combinationSum4(int[] nums, int target) {
        int[] dp = new int[target + 1];
        dp[0] = 1;
        for(int i = 1; i <= target; i++){
            for(int j = 0; j < nums.length; j++){
                if(i >= nums[j]){
                    dp[i] += dp[i - nums[j]];
                }
            }
        }
        return dp[target];
    }

值得注意的是:

DP【i】是目标为i的组合个数

例如dp[5]=dp[1]+dp[4]+dp[2]+dp[3]

但这里会有个问题,假如数组nums中没有2,我们是没法用和为3的组合加上2的,因为这里根本就没有2可选。那我们能选的数字有哪些呢,其实就是数组nums中元素。所以上面的推理我们再来改一下

如果要求dp[i] 我们可以用和为i-nums[0]的组合再加上nums[0] 或者用和为i-nums[1]的组合再加上nums[1] 或者用和为i-nums[2]的组合再加上nums[2]

 

 

LeetCode(8)组合总和4(中等)

标签:tar   tps   for   problems   返回   数组   i++   组合   不同   

原文地址:https://www.cnblogs.com/ash98/p/14701600.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!