Skip to content

Commit ccfeea2

Browse files
authored
Merge pull request #1611 from ivanpenaloza/april18
adding updates
2 parents 09dfa20 + 0900939 commit ccfeea2

3 files changed

Lines changed: 53 additions & 0 deletions

File tree

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
def coinChange(self, coins: List[int], amount: int) -> int:
6+
dp = [amount + 1] * (amount + 1)
7+
dp[0] = 0
8+
for i in range(1, amount + 1):
9+
for coin in coins:
10+
if coin <= i:
11+
dp[i] = min(dp[i], dp[i - coin] + 1)
12+
return dp[amount] if dp[amount] <= amount else -1
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
function coinChange(coins: number[], amount: number): number {
2+
const dp = new Array(amount + 1).fill(amount + 1);
3+
dp[0] = 0;
4+
for (let i = 1; i <= amount; i++) {
5+
for (const coin of coins) {
6+
if (coin <= i) {
7+
dp[i] = Math.min(dp[i], dp[i - coin] + 1);
8+
}
9+
}
10+
}
11+
return dp[amount] <= amount ? dp[amount] : -1;
12+
};
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import unittest
2+
from src.my_project.interviews.top_150_questions_round_22\
3+
.ex_135_coin_change import Solution
4+
5+
6+
class CoinChangeTestCase(unittest.TestCase):
7+
def setUp(self):
8+
self.solution = Solution()
9+
10+
def test_example_1(self):
11+
self.assertEqual(self.solution.coinChange([1, 2, 5], 11), 3)
12+
13+
def test_example_2(self):
14+
self.assertEqual(self.solution.coinChange([2], 3), -1)
15+
16+
def test_example_3(self):
17+
self.assertEqual(self.solution.coinChange([1], 0), 0)
18+
19+
def test_single_coin_exact(self):
20+
self.assertEqual(self.solution.coinChange([5], 5), 1)
21+
22+
def test_large_amount(self):
23+
self.assertEqual(self.solution.coinChange([1, 5, 10, 25], 100), 4)
24+
25+
def test_no_solution_zero_amount(self):
26+
self.assertEqual(self.solution.coinChange([3, 7], 0), 0)
27+
28+
def test_single_coin_multiple(self):
29+
self.assertEqual(self.solution.coinChange([3], 9), 3)

0 commit comments

Comments
 (0)