博客
关于我
322. 零钱兑换
阅读量:521 次
发布时间:2019-03-07

本文共 1118 字,大约阅读时间需要 3 分钟。

重新优化后的内容如下:

硬币改变问题常用动态规划法解决,目标是找到组成给定金额所需的最少硬币数量。以下代码示例展示了该算法的实现思路。

public int coinChange(int[] coins, int amount) {    if (amount == 0)        return 0;    if (coins == null || coins.length == 0)        return -1;        int[] dp = new int[amount + 1];    for (int i = 1; i <= amount; i++) {        int min = Integer.MAX_VALUE;        for (int face : coins) {            if (face > i)                continue;            int value = dp[i - face];            if (value < 0 || value > min)                continue;            min = value;        }        if (min == Integer.MAX_VALUE)            dp[i] = -1;        else            dp[i] = min + 1;    }    return dp[amount];}
  • 初始化状态数组:创建一个名为dp的数组,其长度为目标金额加1。dp[i]表示组成金额i所需的最少硬币数。初始化时,dp[0]通常为0,因为不需要硬币可以组成0元。

  • 定义递推关系:对于每一个金额i(从1到amount),初始化一个min值为最大可能值(Integer.MAX_VALUE)。然后遍历每一个硬币的面值face

    • 如果面值face大于当前金额i,跳过。
    • 对于每个有效的面值face,获取组成金额i-face所需的硬币数量。若dp[i-face]值为负数或大于当前min值,则忽略这种情况。
    • 更新min为找到最小的硬币数量。
    • 如果遍历结束后min仍为最大可能值,说明无法组成金额i,设为-1。如果自然得到的最少硬币数是可行的,则设为min + 1
  • 返回结果:最终,dp[amount]中存储的值即为组成给定金额所需的最少硬币数量。若无法组成,该值为-1。

  • 此算法通过一次遍历所有可能金额,并对每个金额尝试每个硬币面值,时间复杂度为O(n*m),其中n为金额,m为硬币面值数量。

    转载地址:http://moznz.baihongyu.com/

    你可能感兴趣的文章
    Node.js升级工具n
    查看>>
    Node.js卸载超详细步骤(附图文讲解)
    查看>>
    Node.js卸载超详细步骤(附图文讲解)
    查看>>
    Node.js基于Express框架搭建一个简单的注册登录Web功能
    查看>>
    node.js学习之npm 入门 —8.《怎样创建,发布,升级你的npm,node模块》
    查看>>
    Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅
    查看>>
    Node.js安装及环境配置之Windows篇
    查看>>
    Node.js安装和入门 - 2行代码让你能够启动一个Server
    查看>>
    node.js安装方法
    查看>>
    Node.js官网无法正常访问时安装NodeJS的方法
    查看>>
    node.js模块、包
    查看>>
    node.js的express框架用法(一)
    查看>>
    Node.js的交互式解释器(REPL)
    查看>>
    Node.js的循环与异步问题
    查看>>
    Node.js高级编程:用Javascript构建可伸缩应用(1)1.1 介绍和安装-安装Node
    查看>>
    nodejs + socket.io 同时使用http 和 https
    查看>>
    NodeJS @kubernetes/client-node连接到kubernetes集群的方法
    查看>>
    NodeJS API简介
    查看>>
    Nodejs express 获取url参数,post参数的三种方式
    查看>>
    nodejs http小爬虫
    查看>>