Vấn đề
Chúng tôi được yêu cầu viết một hàm JavaScript đưa vào một mảng chứa một chuỗi các số nguyên, mỗi phần tử của chúng chứa một giá trị có thể có trong khoảng từ -1 đến 1.
Hàm của chúng ta sẽ trả về kích thước của phần con dài nhất của chuỗi đó với tổng bằng 0 hoặc cao hơn.
Ví dụ
Sau đây là mã -
const arr = [-1, -1, 0, 1, 1, -1, -1, -1]; const longestPositiveSum = (arr = []) => { let sum = 0; let maxslice = 0; let length = arr.length; const sumindex = []; let marker = length * 2 + 1; for(let i = 0; i < length * 2; i++){ sumindex[i] = marker; } for(let i = 0; i < arr.length; i++){ sum += arr[i]; if (sum >= 0) maxslice = i + 1; else if (sumindex[sum+length] != marker) maxslice = Math.max(maxslice, i - sumindex[sum+length]); else sumindex[sum+length] = i; }; return maxslice; }; console.log(longestPositiveSum(arr));
Đầu ra
5