Algorithm
零钱兑换
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1
示例1
输入: coins = [1, 2, 5], amount = 11
输出: 3
解释: 11 = 5 + 5 + 1
示例2
输入: coins = [2], amount = 3
输出: -1
代码实现
public int coinChange(int[] coins, int amount) {
if (amount <0 || coins == null || coins.length == 0) {
return -1;
}
int[] state = new int[amount + 1];
for (int i = 0; i <= amount; i++) {
state[i] = -1;
}
state[0] = 0;
for (int i = 1; i <= amount; i++) {
for (int j = 0; j < coins.length; j++) {
if (i - coins[j] >= 0 && state[i - coins[j]] >= 0) {
int count = state[i - coins[j]] + 1;
if (state[i] < 0 || state[i] > count) {
state[i] = count;
}
}
}
}
return state[amount];
}
Review
成为超级学习者的6个习惯
Tip
脱o选型处理
Power Designer:
首先使用pd连接Oracle生成表结构,然后切换到mysql同步表结构到mysql。
遇到的问题:pd不支持64位机器jdk使用jdbc连接数据库,64位安装32位jdk连接数据库会出现账号密码错误,暂时没有定位到原因
Navicat Premium:
此工具支持连接多数据源,可以配置Oracle导库到mysql。
注意:主键不会自动配置,需要手动设置主键自增;默认值需要手动设置;索引和视图需要检查是否匹配。
网友评论