Computer >> Máy Tính >  >> Lập trình >> Javascript

Các phần tử liền kề của mảng có tổng gần nhất với 0 - JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript nhận vào một mảng số và trả về một mảng con gồm hai phần tử từ mảng ban đầu có tổng gần nhất bằng 0.

Nếu độ dài của mảng nhỏ hơn 2, chúng ta nên trả về toàn bộ mảng.

Ví dụ:Nếu mảng đầu vào là -

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

Ở đây, tổng của cặp [5, -4] là 1 gần 0 nhất đối với bất kỳ hai phần tử liền kề nào của mảng, vì vậy chúng ta nên trả về [5, -4]

Ví dụ

Sau đây là mã -

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));

Đầu ra

Sau đây là đầu ra trong bảng điều khiển -

[5, -4]