Skip to content

Commit 500ae42

Browse files
committed
coin change 2
1 parent 4005d49 commit 500ae42

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

src/coin_change2.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
use std::collections::HashMap;
2+
pub struct Solution {}
3+
impl Solution {
4+
pub fn change(amount: i32, coins: Vec<i32>) -> i32 {
5+
let mut mem: HashMap<(usize, i32), i32> = HashMap::new();
6+
Self::dfs(0, 0, amount, &coins, &mut mem)
7+
}
8+
9+
fn dfs(
10+
sum: i32,
11+
i: usize,
12+
amount: i32,
13+
coins: &Vec<i32>,
14+
mem: &mut HashMap<(usize, i32), i32>,
15+
) -> i32 {
16+
if sum > amount || i >= coins.len() {
17+
return 0;
18+
}
19+
20+
if sum == amount {
21+
return 1;
22+
}
23+
24+
if let Some(val) = mem.get(&(i, sum)) {
25+
return *val;
26+
}
27+
let val = Self::dfs(sum + coins[i], i, amount, coins, mem)
28+
+ Self::dfs(sum, i + 1, amount, coins, mem);
29+
mem.insert((i, sum), val);
30+
val
31+
}
32+
}

src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
mod best_time_stock_cooldown;
1+
mod coin_change2;
22
fn main() {}

0 commit comments

Comments
 (0)