เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ตัวเลข arr เป็นอาร์กิวเมนต์แรก และตัวเลข num เป็นอาร์กิวเมนต์ที่สอง ฟังก์ชันต้องหาสองตัวเลขที่ผลรวมมากที่สุดในอาร์เรย์แต่ยังน้อยกว่า num ถ้าไม่มีคู่ไหนผลรวมน้อยกว่า num ให้คืน -1
ตัวอย่าง
ถ้าอาร์เรย์และตัวเลขนำเข้าคือ:
const arr = [34, 75, 33, 23, 1, 24, 54, 8]; const num = 60;
ผลลัพธ์ควรเป็น:
const output = 58;
เพราะ 34 + 24 เป็นผลรวมมากที่สุดที่น้อยกว่า 60
ตัวอย่างโค้ด
const arr = [34, 75, 33, 23, 1, 24, 54, 8];
const num = 60;
const lessSum = (arr = [], num = 1) => {
arr.sort((a, b) => a - b);
let max = -1;
let i = 0;
let j = arr.length - 1;
while(i < j) {
let sum = arr[i] + arr[j];
if(sum < num) {
max = Math.max(max, sum);
i++;
} else {
j--;
}
}
return max;
};
console.log(lessSum(arr, num));
ผลลัพธ์
58