Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ผลรวมของสองสมาชิกที่มากที่สุดแต่ยังน้อยกว่า n ใน JavaScript

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