322. Coin change

  • 注意点:
  1. 边界条件的确认
  2. 初始化用Inf(除了0位置)
  3. 返回值是否为inf的判断
  4. 递推公式为min(res[money],1+res[money-coin])
  5. 函数内部先判断money是否大于等于coin
    def coinChange(self, coins, amount):
        """
        :type coins: List[int]
        :type amount: int
        :rtype: int
        """
        # 边界条件确认
        if amount <= 0:
            return 0
        if len(coins) == 0:
            return -1
        
        # 用inf初始化,第0个令等于0
        res = [float("inf")] * (amount + 1)
        res[0] = 0
        
        for money in range(1, len(res)):
            for coin in coins:
                if coin <= money:
                    # 当前结果 和 1(用当前coin)+res[money-coin] 的比较
                    res[money] = min(res[money],res[money - coin]+1)
        
        # 如果返回结果比全部用1来找零还大,说明结果为inf,返回-1
        if res[-1] > len(res):
            return -1
        return res[-1]

你可能感兴趣的:(322. Coin change)