เรามีอาร์เรย์ของจำนวนเต็มบวกเรียงแบบนี้ -
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