문제
각 요소에 -1에서 1 사이의 가능한 값이 포함된 일련의 정수를 포함하는 배열을 취하는 JavaScript 함수를 작성해야 합니다.
함수는 합이 0 이상인 해당 시퀀스의 가장 긴 하위 섹션 크기를 반환해야 합니다.
예
다음은 코드입니다 -
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));
출력
5