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

ค่าบวกที่น้อยที่สุดที่ไม่สามารถแสดงเป็นผลรวมของ subarray JavaScript


เรามีอาร์เรย์ของจำนวนเต็มบวกเรียงแบบนี้ -

const arr = [1, 3, 6, 10, 11, 15];

เราจำเป็นต้องเขียนฟังก์ชันโดยพูดว่า findSmallest() ซึ่งรับอาร์เรย์ดังกล่าวและคืนค่าจำนวนเต็มบวกที่เล็กที่สุดซึ่งไม่สามารถแสดงเป็นผลรวมของอาร์เรย์ย่อยบางอาร์เรย์ของอาร์เรย์ดั้งเดิมนี้

ตัวอย่างเช่น −

สำหรับอาร์เรย์นี้ที่เขียนด้านบน 2 เป็นจำนวนเต็มบวกที่เล็กที่สุด ซึ่งไม่สามารถเข้าถึงได้โดยการรวมอาร์เรย์ย่อยใดๆ ของอาร์เรย์ดั้งเดิมนี้ ตอนนี้ เรามาเขียนโค้ดสำหรับฟังก์ชันนี้กัน เมื่อจัดเรียงอาร์เรย์แล้ว เราก็สามารถแก้ปัญหานี้ได้ในเวลาเชิงเส้น ในตอนแรกเราพิจารณาว่าจำนวนที่ต้องการคือ 1 เนื่องจาก 1 เป็นค่าที่น้อยที่สุดที่สามารถรับได้ เราจะวนซ้ำในอาร์เรย์และเพิ่มองค์ประกอบที่สอดคล้องกับจำนวนที่ต้องการต่อไป

หากมีการทำซ้ำ ตัวเลขที่เกี่ยวข้องกันนั้นมากกว่าจำนวนที่กำหนด หมายความว่าเราพบหมายเลขที่ต้องการ มิฉะนั้นเราจะวนซ้ำ

ตัวอย่าง

const arr = [1, 3, 6, 10, 11, 15];
const findSmallest = arr => {
   let res = 1;
   for(let ind = 0; ind < arr.length && arr[ind] <= res; ind++){
      res += arr[ind];
   }
   return res;
};
console.log(findSmallest(arr));

ผลลัพธ์

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

2