zoukankan      html  css  js  c++  java
  • 377. Combination Sum IV

    https://leetcode.com/problems/combination-sum-iv/#/description

    Given an integer array with all positive numbers and no duplicates, find the number of possible combinations that add up to a positive integer target.

    Example:

    nums = [1, 2, 3]
    target = 4
    
    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.
    
    Therefore the output is 7.
    

    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?

    Sol:

    DP.

    class Solution(object):
        def combinationSum4(self, nums, target):
            """
            :type nums: List[int]
            :type target: int
            :rtype: int
            """
            # DP
            nums.sort()
            dp = [0] * (target + 1)
            dp[0] = 1 # if num == target
            
            # before we figure out the number of ways that add up to target, we figure out the number of ways that add up to target - 1, target - 2, ..., 1.
            for currSum in range(1, target + 1):
                for num in nums:
                    if num > currSum:
                        break 
                    dp[currSum] += dp[currSum - num]
            return dp[target]
            
  • 相关阅读:
    Web 服务器配置
    Web 浏览
    C++ Web 编程
    C++ 多线程
    C++ 信号处理
    C++ 预处理器
    C++ 模板
    C++ 命名空间
    C++ 动态内存
    C++ 异常处理
  • 原文地址:https://www.cnblogs.com/prmlab/p/7154990.html
Copyright © 2011-2022 走看看