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