zoukankan      html  css  js  c++  java
  • 0377. Combination Sum IV (M)

    Combination Sum IV (M)

    题目

    Given an array of distinct integers nums and a target integer target, return the number of possible combinations that add up to target.

    The answer is guaranteed to fit in a 32-bit integer.

    Example 1:

    Input: nums = [1,2,3], target = 4
    Output: 7
    Explanation:
    The possible combination ways are:
    (1, 1, 1, 1)
    (1, 1, 2)
    (1, 2, 1)
    (1, 3)
    (2, 1, 1)
    (2, 2)
    (3, 1)
    Note that different sequences are counted as different combinations.
    

    Example 2:

    Input: nums = [9], target = 3
    Output: 0
    

    Constraints:

    • 1 <= nums.length <= 200
    • 1 <= nums[i] <= 1000
    • All the elements of nums are unique.
    • 1 <= target <= 1000

    Follow up: What if negative numbers are allowed in the given array? How does it change the problem? What limitation we need to add to the question to allow negative numbers?


    题意

    给定一个数组,每次可以从中任取一个数,使得到的序列的和正好为指定值,求这样的序列的个数。

    思路

    动态规划。dp[i]表示target为i时满足的序列的数量,则遍历数组中每一个数num,有递推式(dp[i]=sum{dp[i-num]})


    代码实现

    Java

    class Solution {
        public int combinationSum4(int[] nums, int target) {
            int[] dp = new int[target + 1];
    
            Arrays.sort(nums);
            dp[0] = 1;
    
            for (int i = 1; i <= target; i++) {
                for (int num : nums) {
                    if (i < num) break;
                    dp[i] += dp[i - num];
                }
            }
            
            return dp[target];
        }
    }
    
  • 相关阅读:
    Python 生成器相关知识
    openpyxl 模块学习记录
    Python 装饰器相关知识
    Python 闭包的相关知识
    Python 内置函数简单介绍
    Git提交的本地仓库在什么位置
    支付宝公钥,私钥加密解密问题
    字符转义
    pyhton 模拟浏览器实现
    大小端模式 大端存储 小端存储
  • 原文地址:https://www.cnblogs.com/mapoos/p/14677173.html
Copyright © 2011-2022 走看看