diff --git a/README.md b/README.md index 897a179fb2..b5c9b40bba 100644 --- a/README.md +++ b/README.md @@ -740,7 +740,8 @@ _If you like this project, please leave me a star._ ★ |523|[Continuous Subarray Sum](https://leetcode.com/problems/continuous-subarray-sum/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_523.java) | |Medium| DP |522|[Longest Uncommon Subsequence II](https://leetcode.com/problems/longest-uncommon-subsequence-ii/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_522.java) | | Medium| |521|[Longest Uncommon Subsequence I](https://leetcode.com/problems/longest-uncommon-subsequence-i/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_521.java) | | Easy| -|520|[Detect Capital](https://leetcode.com/problems/detect-capital/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_520.java) | |Easy| +|520|[Detect Capital](https://leetcode.com/problems/detect-capital/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_520.java) | |Easy| +|518|[Coin Change 2](https://leetcode.com/problems/coin-change-2/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_518.java) | |Medium| Array, DP |517|[Super Washing Machines](https://leetcode.com/problems/super-washing-machines/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_517.java) | |Hard| DP |516|[Longest Palindromic Subsequence](https://leetcode.com/problems/longest-palindromic-subsequence/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_516.java) | |Medium| DP |515|[Find Largest Value in Each Tree Row](https://leetcode.com/problems/find-largest-value-in-each-tree-row/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_515.java) | |Medium| BFS diff --git a/src/main/java/com/fishercoder/solutions/_518.java b/src/main/java/com/fishercoder/solutions/_518.java new file mode 100644 index 0000000000..0d654731cd --- /dev/null +++ b/src/main/java/com/fishercoder/solutions/_518.java @@ -0,0 +1,18 @@ +package com.fishercoder.solutions; + +public class _518 { + public static class Solution1 { + public int change(int amount, int[] coins) { + int[] ways = new int[amount + 1]; + ways[0] = 1; + for (int denom : coins) { + for (int i = 0; i < ways.length; i++) { + if (denom <= i) { + ways[i] += ways[i - denom]; + } + } + } + return ways[amount]; + } + } +} diff --git a/src/test/java/com/fishercoder/_518Test.java b/src/test/java/com/fishercoder/_518Test.java new file mode 100644 index 0000000000..e732d9a3d4 --- /dev/null +++ b/src/test/java/com/fishercoder/_518Test.java @@ -0,0 +1,25 @@ +package com.fishercoder; + +import com.fishercoder.solutions._518; +import org.junit.BeforeClass; +import org.junit.Test; + +import static junit.framework.Assert.assertEquals; + +public class _518Test { + private static _518.Solution1 solution1; + + @BeforeClass + public static void setup() { + solution1 = new _518.Solution1(); + } + + @Test + public void test1() { + int amount = 5; + int[] coins = new int[] {1, 2, 5}; + int expected = 4; + int actual = solution1.change(amount, coins); + assertEquals(expected, actual); + } +}