Computer >> Máy Tính >  >> Lập trình >> Javascript

Tổng hợp thành số tiền với ít đồng tiền nhất trong JavaScript

Vấn đề

Chúng tôi bắt buộc phải viết một hàm JavaScript lấy arr, arr, làm đối số đầu tiên. Thisarray về cơ bản chỉ định các loại mệnh giá tiền xu khác nhau mà chúng tôi có.

Đối số thứ hai của hàm là một số, số tiền, chỉ định số tiền chúng ta muốn cộng vào. Chức năng của chúng tôi sẽ chỉ trả lại số lượng xu tối thiểu cần thiết để cộng vào số tiền đó.

Nếu không có cách nào, chúng ta có thể đạt được số tiền, chúng ta nên trả về -1.

Ví dụ:nếu đầu vào của hàm là -

const arr = [1, 2, 5];
const amount = 17;

Sau đó, đầu ra phải là -

const output = 4;

Giải thích đầu ra:

Bởi vì số tiền có thể đạt được bằng cách sử dụng 3 đồng 5 và 1 đồng 2.

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

4