Coin Change LeetCode solution in Java
1class Solution {2public int coinChange(int[] coins, int amount) {3int m = coins.length, n = amount;4int dp[][] = new int[m + 1][n + 1];5for (int j = 0; j <= n; j++) {6dp[0][j] = 0;7}8for (int i = 0; i <= m; i++) {9dp[i][0] = 0;10}11for (int i = 1; i <= m; i++) {12for (int j = 1; j <= n; j++) {13int t1 = Integer.MAX_VALUE;14if ((i - 1) == 0) {15if (j % coins[i - 1] == 0) {16dp[i][j] = j / coins[i - 1];17} else {18dp[i][j] = (int) 1e9;19}20} else {21int t2 = dp[i - 1][j];22if (coins[i - 1] <= j) {23t1 = dp[i][j - coins[i - 1]] + 1;24}25dp[i][j] = Math.min(t1, t2);26}27}28}29if (dp[m][n] >= 1e9) return -1;30else return dp[m][n];31}32}