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

องค์ประกอบที่อยู่ติดกันของอาร์เรย์ที่ผลรวมใกล้เคียงกับ 0 มากที่สุด - JavaScript


เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลขและส่งกลับอาร์เรย์ย่อยของสององค์ประกอบจากอาร์เรย์ดั้งเดิมซึ่งผลรวมใกล้เคียงกับ 0 มากที่สุด

หากความยาวของอาร์เรย์น้อยกว่า 2 เราควรคืนค่าอาร์เรย์ทั้งหมด

ตัวอย่างเช่น หากอาร์เรย์อินพุตเป็น −

const arr = [4, 4, 12, 3, 3, 1, 5, -4, 2, 2];

ในที่นี้ ผลรวมของคู่ [5, -4] คือ 1 ซึ่งเป็น 0 ที่ใกล้ที่สุดสำหรับสององค์ประกอบที่อยู่ติดกันของอาร์เรย์ ดังนั้นเราควรคืนค่า [5, -4]

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

const arr = [4, 4, 12, 3, 3, 1, 5, -4, 2, 2];
const closestElements = (arr, sum) => {
   if(arr.length <= 2){
      return arr;
   }
   const creds = arr.reduce((acc, val, ind) => {
      let { closest, startIndex } = acc;
      const next = arr[ind+1];
      if(!next){
         return acc;
      }
      const diff = Math.abs(sum - (val + next));
      if(diff < closest){
         startIndex = ind;
         closest = diff;
      };
      return { startIndex, closest };
   }, {
      closest: Infinity,
      startIndex: -1
   });
   const { startIndex: s } = creds;
   return [arr[s], arr[s+1]];
};
console.log(closestElements(arr, 1));

ผลลัพธ์

ต่อไปนี้เป็นผลลัพธ์ในคอนโซล -

[5, -4]