LeetCode 322. 코인 변경
4078 단어 algorithmsjavascript
설명:
당신은 다른 교단의 동전과 총 금액 금액이 제공됩니다. 해당 금액을 구성하는 데 필요한 최소 동전 수를 계산하는 함수를 작성하십시오. 동전의 어떤 조합으로도 그 금액을 채울 수 없으면 -1을 반환합니다.
각 종류의 동전이 무한히 있다고 가정할 수 있습니다.
예 1:
Input: coins = [1,2,5], amount = 11
Output: 3
Explanation: 11 = 5 + 5 + 1
예 2:
Input: coins = [2], amount = 3
Output: -1
해결책:
n = 동전.길이
m = 양
시간 복잡도 : O(n*m)
공간 복잡도: O(m)
// Tabulation solution
// Create an array where array[i] = least number of coins to make i
var coinChange = function(coins, amount) {
// Array to hold the number of coins needed to make each amount
const dp = Array(amount+1).fill(Infinity);
// To make 0 you would not use any coins
dp[0] = 0;
// Fill the array with number of coins to make each i amount
for(let i = 1; i < dp.length; i++) {
// Find coins that can make amount i
for(let coin of coins) {
// If a coin can make the current amount check if this coin
// is used in the sequence that uses fewest number of coins
// to make this amount
if(i-coin >= 0) dp[i] = Math.min(dp[i], dp[i-coin]+1);
}
}
return dp[amount] === Infinity ? -1 : dp[amount];
};
Reference
이 문제에 관하여(LeetCode 322. 코인 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/cod3pineapple/leetcode-322-coin-change-527o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)