1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| package com.demo.s322;
public class Solution { public int coinChange(int[] coins, int amount) { if (amount < 1) { return 0; } return coinChange(coins, amount, new int[amount]); }
int coinChange(int[] coins, int rem, int[] count) { if(rem < 0) { return -1; }
if(rem ==0) { return 0; }
if (count[rem - 1] != 0) { return count[rem - 1]; } int min = Integer.MAX_VALUE; for (int coin : coins) { int res = coinChange(coins, rem - coin, count); if (res >= 0 && res < min) { min = 1 + res; } } count[rem - 1] = (min == Integer.MAX_VALUE) ? -1 : min; return count[rem - 1];
}
}
|