File tree Expand file tree Collapse file tree 1 file changed +50
-0
lines changed
src/com/fghpdf/CoinChange Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Original file line number Diff line number Diff line change
1
+ package com .fghpdf .CoinChange ;
2
+
3
+ /**
4
+ * @author fghpdf
5
+ * @date 2019/12/29
6
+ * https://leetcode.com/problems/coin-change/
7
+ * dp coins [1,2,5] amount 11
8
+ * dp[0] is 0
9
+ * dp[1] is 1. coin 1
10
+ * dp[2] is 1. coin 2. min(coin 2 + dp[0]...coin 1 + dp[1])
11
+ * ...
12
+ * dp[11] is 3. min(coin 5 + dp[6]...coin 3 + dp[8]...coin 1 + dp[10])
13
+ **/
14
+ public class Solution {
15
+ public int coinChange (int [] coins , int amount ) {
16
+ if (amount < 1 ) {
17
+ return amount ;
18
+ }
19
+ return helper (coins , amount , new int [amount ]);
20
+ }
21
+
22
+ private int helper (int [] coins , int rem , int [] dp ) {
23
+ if (rem < 0 ) {
24
+ return -1 ;
25
+ }
26
+
27
+ if (rem == 0 ) {
28
+ return 0 ;
29
+ }
30
+
31
+ if (dp [rem - 1 ] != 0 ) {
32
+ return dp [rem - 1 ];
33
+ }
34
+
35
+ int min = Integer .MAX_VALUE ;
36
+ for (int coin : coins ) {
37
+ int res = helper (coins , rem - coin , dp );
38
+ if (res >= 0 && res < min ) {
39
+ min = res + 1 ;
40
+ }
41
+ }
42
+ dp [rem - 1 ] = (min == Integer .MAX_VALUE ) ? -1 : min ;
43
+ return dp [rem - 1 ];
44
+ }
45
+
46
+ public static void main (String [] args ) {
47
+ Solution solution = new Solution ();
48
+ System .out .println (solution .coinChange (new int []{1 , 2 , 5 }, 11 ));
49
+ }
50
+ }
You can’t perform that action at this time.
0 commit comments