代码随想录算法训练营第38天 | 322. 零钱兑换、279.完全平方数、139.单词拆分

322. 零钱兑换

题目链接:. - 力扣(LeetCode)

func coinChange(coins []int, amount int) int {
    if amount==0{
        return 0
    }
    dp:=make([]int,amount+1)
    for j:=range dp{
        dp[j]=amount+1
    }
    dp[0]=0
    for i:=range coins{
        for j:=coins[i];j<=amount;j++{
            dp[j]=min(dp[j],dp[j-coins[i]]+1)
        }
    }
    if dp[amount]>amount{
        return -1
    }
    return dp[amount]
}

279.完全平方数

题目链接:. - 力扣(LeetCode)

func numSquares(n int) int {
    if n==1{
        return 1
    }
    dp:=make([]int,n+1)
    for j:=range dp{
        dp[j]=n+1
    }
    dp[0]=0
    dp[1]=1
    for i:=1;i*i<=n;i++{
        for j:=i*i;j<=n;j++{
            dp[j]=min(dp[j],dp[j-i*i]+1)
        }
    }
    return dp[n]
}

139.单词拆分

题目链接:. - 力扣(LeetCode)

func wordBreak(s string, wordDict []string) bool {
    dp:=make([]bool,len(s)+1)
    dp[0]=true
    for i:=1;i

你可能感兴趣的:(算法)