알고리즘 문제를 해결할 때, 자주 사용되는 문제 해결 방법이다.
- 연속된 데이터 구간을 처리 해야 한다.
- 배열의 특정 연속된 구간을 처리한다.
위와 같은 문제 해결 방법이 필요할 때, 투 포인터 알고리즘을 사용하면 빠르게 처리할 수 있다. (시간 복잡도 : O(n))
특정한 합을 가지는 부분 연속 수열을 구하라.
수열 7, 6, 1, 6, 2, 0, 4, 2 에서 부분 합이 6이 되는 경우의 개수를 구하라
(()=> {
function solution(m, arr){
let answer=0;
let start=end=0;
let sum = arr[0];
while(start < arr.length && end < arr.length) {
if(sum === m) {
answer++;
}
if(sum <= m){
end++;
sum += arr[end];
}
else if(sum > m) {
sum-=arr[start];
start++;
}
}
return answer;
}
let a=[7, 6, 1, 6, 2, 0, 4, 2];
console.log(solution(6, a));
})();