mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-04 15:39:42 +08:00
Added the tests for coinChangeMin function
This commit is contained in:
@ -15,3 +15,19 @@ export const change = (coins, amount) => {
|
|||||||
}
|
}
|
||||||
return combinations[amount]
|
return combinations[amount]
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @params {Array} coins
|
||||||
|
* @params {Number} amount
|
||||||
|
*/
|
||||||
|
export const coinChangeMin = (coins, amount) => {
|
||||||
|
const map = { 0: 1 }
|
||||||
|
for (let i = 1; i <= amount; i++) {
|
||||||
|
let min = Infinity
|
||||||
|
for (const coin of coins) {
|
||||||
|
if (i < coin) continue
|
||||||
|
min = Math.min(min, 1 + map[i - coin])
|
||||||
|
}
|
||||||
|
map[i] = min
|
||||||
|
}
|
||||||
|
return map[amount] === Infinity ? -1 : map[amount] - 1
|
||||||
|
}
|
||||||
|
@ -1,37 +1,44 @@
|
|||||||
import { change } from '../CoinChange'
|
import { change, coinChangeMin } from '../CoinChange'
|
||||||
|
|
||||||
test('Base Case 1', () => {
|
test('Base Case 1', () => {
|
||||||
const coins = [2, 3, 5]
|
const coins = [2, 3, 5]
|
||||||
const amount = 0
|
const amount = 0
|
||||||
expect(change(coins, amount)).toBe(1)
|
expect(change(coins, amount)).toBe(1)
|
||||||
|
expect(coinChangeMin(coins, amount)).toBe(0)
|
||||||
})
|
})
|
||||||
test('Base Case 2', () => {
|
test('Base Case 2', () => {
|
||||||
const coins = []
|
const coins = []
|
||||||
const amount = 100
|
const amount = 100
|
||||||
expect(change(coins, amount)).toBe(0)
|
expect(change(coins, amount)).toBe(0)
|
||||||
|
expect(coinChangeMin(coins, amount)).toBe(-1)
|
||||||
})
|
})
|
||||||
test('Test Case 1', () => {
|
test('Test Case 1', () => {
|
||||||
const coins = [2, 4, 5]
|
const coins = [2, 4, 5]
|
||||||
const amount = 12
|
const amount = 12
|
||||||
expect(change(coins, amount)).toBe(5)
|
expect(change(coins, amount)).toBe(5)
|
||||||
|
expect(coinChangeMin(coins, amount)).toBe(3)
|
||||||
})
|
})
|
||||||
test('Test Case 2', () => {
|
test('Test Case 2', () => {
|
||||||
const coins = [5, 2, 3, 7, 6, 1, 12, 11, 9, 15]
|
const coins = [5, 2, 3, 7, 6, 1, 12, 11, 9, 15]
|
||||||
const amount = 45
|
const amount = 45
|
||||||
expect(change(coins, amount)).toBe(12372)
|
expect(change(coins, amount)).toBe(12372)
|
||||||
|
expect(coinChangeMin(coins, amount)).toBe(3)
|
||||||
})
|
})
|
||||||
test('Test Case 3', () => {
|
test('Test Case 3', () => {
|
||||||
const coins = [2]
|
const coins = [2]
|
||||||
const amount = 3
|
const amount = 3
|
||||||
expect(change(coins, amount)).toBe(0)
|
expect(change(coins, amount)).toBe(0)
|
||||||
|
expect(coinChangeMin(coins, amount)).toBe(-1)
|
||||||
})
|
})
|
||||||
test('Test Case 4', () => {
|
test('Test Case 4', () => {
|
||||||
const coins = [3, 5, 7, 8, 9, 10, 11]
|
const coins = [3, 5, 7, 8, 9, 10, 11]
|
||||||
const amount = 500
|
const amount = 500
|
||||||
expect(change(coins, amount)).toBe(35502874)
|
expect(change(coins, amount)).toBe(35502874)
|
||||||
|
expect(coinChangeMin(coins, amount)).toBe(46)
|
||||||
})
|
})
|
||||||
test('Test Case 5', () => {
|
test('Test Case 5', () => {
|
||||||
const coins = [10]
|
const coins = [10]
|
||||||
const amount = 10
|
const amount = 10
|
||||||
expect(change(coins, amount)).toBe(1)
|
expect(change(coins, amount)).toBe(1)
|
||||||
|
expect(coinChangeMin(coins, amount)).toBe(1)
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user