File tree 1 file changed +48
-0
lines changed
1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change
1
+ /*
2
+ input : array of integers each element represents coins, single integer amount
3
+ output : fewest number of coin to make up the amount
4
+ constraint
5
+ 1) elements are positive?
6
+ yes
7
+ 2) coins are in integer range?
8
+ yes
9
+ 3) range of amoutn
10
+ integer range?
11
+ [0, 10^4]
12
+ 4) at least one valid answer exists?
13
+ nope. if there no exist than return -1
14
+
15
+ edge. case
16
+ 1) if amount == 0 return 0;
17
+
18
+ solution 1) top-down approach
19
+
20
+ amount - each coin
21
+ until amount == 0
22
+ return min
23
+ tc : O(n * k) when n is amount, k is unique coin numbers
24
+ sc : O(n) call stack
25
+
26
+ solution 2) bottom-up
27
+ tc : O(n*k)
28
+ sc : O(n)
29
+ let dp[i] the minimum number of coins to make up amount i
30
+
31
+ */
32
+ class Solution {
33
+ public int coinChange (int [] coins , int amount ) {
34
+ //edge
35
+ if (amount == 0 ) return 0 ;
36
+ int [] dp = new int [amount +1 ];
37
+ dp [0 ] = 0 ;
38
+ for (int i = 1 ; i <= amount ; i ++) {
39
+ dp [i ] = amount +1 ;
40
+ for (int coin : coins ) {
41
+ if (i - coin >= 0 ) {
42
+ dp [i ] = Math .min (dp [i ], dp [i -coin ] + 1 );
43
+ }
44
+ }
45
+ }
46
+ return dp [amount ] == amount +1 ? -1 : dp [amount ];
47
+ }
48
+ }
You can’t perform that action at this time.
0 commit comments