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

Thêm các phần tử vào mảng để làm cho tổng của nó trở nên đa dạng trong JavaScript

Vấn đề

Chúng tôi bắt buộc phải viết một hàm JavaScript lấy một mảng Numbers, arr, làm đối số thứ nhất và một số duy nhất, num, làm đối số thứ hai.

Chúng ta nên, bằng cách thêm các phần tử vào nó, làm cho mảng của chúng ta có thể thu được bất kỳ tổng nào bằng cách thêm các số cụ thể từ nó vào giữa [0, num] (bao gồm cả hai). Cuối cùng, hàm của chúng ta sẽ trả về số lượng số tối thiểu cần thiết để thêm vào mảng để nó có thể tạo ra bất kỳ tổng nào từ 0 đến num.

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

const arr = [1, 5, 10];
const sum = 20;

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

const output = 2;

Giải thích đầu ra:

Bởi vì nếu chúng ta thêm hai số, (2 và 4) vào mảng, chúng ta có thể đạt được bất kỳ tổng nào trong khoảng [0, 20]

Ví dụ

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

const arr = [1, 5, 10];
const sum = 20;
const minimumAddition = (arr = [], sum = 1) => {
   let canAdd = 1;
   let count = 0,i = 0;
   while(canAdd <= sum){
      if((i >= arr.length) || (canAdd < arr[i])){
         count++;
         canAdd+=canAdd;
      }else{
         canAdd += arr[i++];
      };
   };
   return count;
};
console.log(minimumAddition(arr, sum));

Đầu ra

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

2