ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน 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