Vấn đề
Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng nhị phân (một mảng chỉ bao gồm 0 và 1), arr, làm đối số duy nhất. Hàm của chúng ta sẽ tìm số lượng lớn nhất các số 1 liên tiếp trong mảng này nếu chúng ta có thể lật nhiều nhất một 0.
Ví dụ:nếu đầu vào của hàm là -
const arr = [1, 0, 1, 1, 0];
Sau đó, đầu ra phải là -
const output = 4;
Giải thích đầu ra
Nếu chúng ta lật số 0 ở chỉ số 1 trong mảng, chúng ta sẽ nhận được 4 số 1 liên tiếp.
Ví dụ
Mã cho điều này sẽ là -
const arr = [1, 0, 1, 1, 0]; const findMaximumOne = (nums = []) => { let count = 0; let first = -1; let i =0, j = 0; let res = -Infinity; while(j < nums.length){ if(nums[j] === 1){ res = Math.max(res, j-i+1); }else{ count++; if(count==2){ i = first + 1; count--; }; first = j; }; j++; }; return res; }; console.log(findMaximumOne(arr));
Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
4