322. Coin Change
2016-03-14 23:52
330 查看
代码如下:
// CPP class Solution { public: int coinChange(vector<int>& coins, int amount) { if (amount == 0) { return 0; } // 初始化数组为 0,并将已有钱数置为 1 // initialized vector f with 0 then fill the coin value as 1 vector<int> f(amount + 1, 0); for (int i = 0; i < coins.size(); ++i) { if (coins[i] <= amount) { f[coins[i]] = 1; } } // 在能够凑出钱数目的基础上,计算出新的可凑出的钱数,并更新其需要的张数 // for every value which can be added up to, calculate new value and refresh new value's times for (int pos = 0; pos <= amount; ++pos) { if (f[pos] == 0) { continue; } for (int i = 0; i < coins.size(); ++i) { int value = pos + coins[i]; if (value <= amount) { f[value] = (f[value] == 0) ? (f[pos] + 1) : min(f[value], f[pos] + 1); } } } return (f[amount] == 0) ? -1 : f[amount]; } };
// JAVA public class Solution { public int coinChange(int[] coins, int amount) { if (amount == 0) { return 0; } int[] f = new int[amount + 1]; for (int i = 0; i < coins.length; ++i) { if (coins[i] <= amount) { f[coins[i]] = 1; } } for (int pos = 0; pos <= amount; ++pos) { if (f[pos] == 0) { continue; } for (int i = 0; i < coins.length; ++i) { int value = pos + coins[i]; if (value <= amount) { f[value] = (f[value] == 0) ? (f[pos] + 1) : Math.min(f[value], f[pos] + 1); } } } return (f[amount] == 0) ? -1 : f[amount]; } }
相关文章推荐
- Android之Activity生命周期浅谈
- leetcode 171: Excel Sheet Column Number
- 小的知识点
- Object-c 类、对象方法
- [转]Coroutine,你究竟干了什么?
- [Node.js] Using ES6 and beyond with Node.js
- 20160217.CCPP体系详解(0027天)
- sina发现并不会去导入qq使用的
- OSChina 周二乱弹 ——白色情人节慢慢的把她抱到床上 结果……
- 提升自己就请给自己压力
- android invalid drawable tag vector解决办法
- js 获取复选框 和 并改变状态
- Python TIPS
- 单利设计模式
- 《Android Studio实用指南》12.18 文本搜索工具
- 4种Delphi IDE的调试时查看内存的方法,太酷了!
- STM8 EEPROM调试
- 教程- 云vps开关机,重启,重装系统,重置服务器密码
- BZOJ 1606 Hay For Sale 购买干草
- 海龟算法求解螺旋方阵