Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การเพิ่มองค์ประกอบในอาร์เรย์เพื่อทำให้ผลรวมมีความหลากหลายใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของ Numbers, arr เป็นอาร์กิวเมนต์แรกและตัวเลขเดี่ยว num เป็นอาร์กิวเมนต์ที่สอง

เราควรเพิ่มองค์ประกอบเข้าไป ทำให้อาร์เรย์ของเราได้รับผลรวมใดๆ โดยการเพิ่มตัวเลขเฉพาะระหว่าง [0, num] (รวมทั้งทั้งสองอย่าง) ในที่สุด ฟังก์ชันของเราควรคืนค่าจำนวนขั้นต่ำที่จำเป็นในการเพิ่มลงในอาร์เรย์ เพื่อให้สามารถสร้างผลรวมใดๆ ระหว่าง 0 ถึง num

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −

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

จากนั้นผลลัพธ์ควรเป็น −

const output = 2;

คำอธิบายผลลัพธ์:

เพราะถ้าเราบวกตัวเลขสองตัว (2 และ 4) ลงในอาร์เรย์ เราสามารถบรรลุผลรวมใดๆ ระหว่าง [0, 20]

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

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

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็น -

2