zoukankan      html  css  js  c++  java
  • leetcode刷题笔记322题 零钱兑换

    leetcode刷题笔记322题 零钱兑换

    地址:322. 零钱兑换

    问题描述:

    给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。

    你可以认为每种硬币的数量是无限的。

    示例 1:

    输入:coins = [1, 2, 5], amount = 11
    输出:3
    解释:11 = 5 + 5 + 1
    示例 2:

    输入:coins = [2], amount = 3
    输出:-1
    示例 3:

    输入:coins = [1], amount = 0
    输出:0
    示例 4:

    输入:coins = [1], amount = 1
    输出:1
    示例 5:

    输入:coins = [1], amount = 2
    输出:2

    提示:

    1 <= coins.length <= 12
    1 <= coins[i] <= 231 - 1
    0 <= amount <= 104

    //模拟成完全背包问题 面值为体积 价值为1 进行处理
    object Solution {
        def coinChange(coins: Array[Int], amount: Int): Int = {
            val dp = Array.fill(amount+1)(amount+1)
            dp(0) = 0
    
            for (coin <- coins) {
                for (j <- coin to amount) {
                    dp(j) = math.min(dp(j), dp(j - coin)+1)
                }
            }
    
            if (dp(amount) == amount+1) return -1
            return dp(amount)
        }
    }
    
    import "fmt"
    func coinChange(coins []int, amount int) int {
        dp := make([]int, amount+1)
        
        for i := 1; i < len(dp); i++ {
            dp[i] = amount + 1
        }
    
        for _, v := range coins {
            for i := v; i <= amount; i++ {
                //fmt.Printf("i: %d
    ", i)
                //fmt.Printf("v: %d
    ", v)
                dp[i] = min(dp[i], dp[i - v]+1)
            }
        }
    
        if dp[amount] == amount+1 {
            return -1
        } else {
            return dp[amount]
        }
    
        return -1
    }
    
    func min (a, b int) int {
        if a > b {
            return b
        } else {
            return a
        }
    }
    
  • 相关阅读:
    用脚本保存prefab
    如何在Unity 3D中掷骰子
    转发收藏【原创】浅谈UGUI的ETC1+A的纹理压缩方案总结
    Unity鼠标拖拽控制人物的左右旋转
    蛋哥的学习笔记之-基于Unity的Shader编程:X-1 音乐水波特效
    xlua中hotfix简单实用
    tolua调用C#中的静态类
    scut和unity之间收发请求返回
    scut服务器unity配置
    HTTP网络请求
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/14117031.html
Copyright © 2011-2022 走看看