티스토리 뷰

리스트에 순차적으로 접근해야 할 때 두 개의 점의 위치를 기록하면서 처리하는 알고리즘

Two Pointers 알고리즘의 시간복잡도는 O(n)

 

start, end라는 두 개의 포인터를 사용합니다.

start는 부분배열의 앞 쪽을 가르키는 인덱스, end는 부분배열의 뒤 쪽을 가르키는 인덱스입니다.

맨 처음에 두 포인터는 0에서 시작하며 항상 start<=end를 만족해야합니다.

그리고 매 순간마다 부분합 배열의 합과 구해야하는 값을 비교하여 포인터를 이동하게 됩니다.

  • 부분합 배열의 합 < 구해야하는 값end를 오른쪽으로 한 칸 이동하여 부분합 배열의 크기를 증가시킵니다.
  • 부분합 배열의 합 >= 구해야하는 값start를 오른쪽으로 한 칸 이동하여 부분합 배열의 크기를 감소시킵니다.

 

'알고리즘 > 이론' 카테고리의 다른 글

문자열 총 정리  (0) 2022.01.09
동적 계획법(Dynamic Programming)  (0) 2022.01.09
greedy (탐욕)  (0) 2022.01.09