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

Mảng con liền kề với 0 và 1 trong JavaScript

Vấn đề:

Chúng tôi được yêu cầu viết một hàm JavaScript nhận trong một mảng nhị phân, arr, (một mảng chỉ bao gồm 0 hoặc 1). Hàm của chúng ta sẽ trả về độ dài của mảng con liền kề từ mảng có cùng số 1 và 0.

Ví dụ:nếu đầu vào của hàm là -

const arr = [1, 0, 0, 1, 0, 1, 0, 0];

Sau đó, đầu ra phải là -

const output = 6;

Giải thích đầu ra

6 phần tử đầu tiên của mảng là 1, 0, 0, 1, 0, 1 (ba số 1 và ba số 0)

Ví dụ

Mã cho điều này sẽ là -

const arr = [1, 0, 0, 1, 0, 1, 0, 0];
const findMaxLength = (arr = []) => {
   const { length } = arr;
   if (length < 2){
      return 0
   };
   const map = new Map();
   map.set(0, -1);
   let sum = 0;
   let max = 0;
   for (var i = 0; i < length; i++) {  
      sum += arr[i] === 0 ? -1 : 1;
      if (map.has(sum)) {
         max = Math.max(max, i - map.get(sum));
      } else {
         map.set(sum, i);
      };
   };
   return max;
};
console.log(findMaxLength(arr));

Giải thích mã

Ở đây, chúng tôi nghĩ 0 là -1 và 1 là 1 và tính toán tổng cho các cửa sổ khác nhau, khi tổng bằng 0, chúng tôi biết rằng mảng con phải có cùng số 0 và 1.

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

6