let endIdx = N;
let startIdx = 0;
function findPartialSum(target) {
while (startIdx <= endIdx) {
let partialSum = prefixSum[endIdx] - prefixSum[startIdx];
if (target == partialSum) {
let length = endIdx - startIdx;
return length;
} else if (target < partialSum) {
endIdx -= 1;
} else if (target > partialSum) {
startIdx += 1;
}
}
return 0;
}
console.log(findPartialSum(S));
console.log(prefixSum);
endIdx를 줄이면(-1): 전체 합이 감소startIdx를 늘리면(+1): 앞부분을 깎아내는 것이므로 전체 합이 감소let minLength = Infinity;
let startIdx = 0;
let endIdx = 0;
let currentSum = 0;
while (endIdx <= N) {
if (currentSum >= S) {
minLength = Math.min(minLength, endIdx - startIdx);
currentSum -= numList[startIdx];
startIdx++;
} else {
if (endIdx == N) break;
currentSum += numList[endIdx];
endIdx++;
}
}
console.log(minLength === Infinity ? 0 : minLength);
console.log(prefixSum);
let minLength = Infinity;
min_length = float('inf')
import math
min_length = math.inf