在 JavaScript 中用最少的硬幣數求和
問題
我們需要編寫一個 JavaScript 函式,其中,arr, arr 作為第一個引數。此陣列基本上指定我們擁有的不同型別的硬幣面值。
此函式的第二個引數是一個數字,amount,指定我們要加到一起的數額。我們的函式應該只返回將這個數額加起來所需的最低硬幣數。
如果我們無法達到 amount,則應該返回 -1。
例如,如果函式的輸入為 −
const arr = [1, 2, 5]; const amount = 17;
則輸出應為 −
const output = 4;
輸出說明
因為可以使用 3 個 5 的硬幣和 1 個 2 的硬幣得到這個金額。
示例
程式碼為 −
const arr = [1, 2, 5];
const amount = 17;
const minCoins = (arr = [], amount = 1) => {
const changes = [];
changes[0] = 0;
while(changes.length <= amount){
let change = Math.pow(2, 31) - 1;
for (let i = 0; i < arr.length; i++) {
if (changes.length - arr[i] < 0){
continue;
};
change = Math.min(change, 1 + changes[changes.length - arr[i]]);
};
changes.push(change);
};
return changes[amount] == Math.pow(2, 31) - 1 ? -1 : changes[amount];
};
console.log(minCoins(arr, amount));輸出
控制檯中的輸出為 −
4
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP