본문 바로가기
알고리즘 문제/Leetcode

[leetcode][1004] Max Consecutive Ones III

by 햄과함께 2019. 3. 4.
320x100

문제 : https://leetcode.com/problems/max-consecutive-ones-iii/




투 포인터로 풀었다.

큐를 하나 만들어서 0인 경우 0일 때의 인덱스를 큐에 저장한다.

그리고 start, end 인덱스 2개를 저장한다. A 배열을 앞에서 탐색하면서 탐색 중인 인덱스가 end인덱스가 되는 정답이 될 수 있는 가능한 start 인덱스를 갱신해나간다.

start인덱스는 0부터 시작되며 갱신되는 경우는 [start, end] 범위에 0의 개수(0 인덱스를 저장하는 큐의 size)가 K개를 초과하는 경우이다.

start는 큐의 가장 앞에 있는 0의 인덱스 + 1이 된다.

A 배열을 모두 탐색하면서 가능한 [start, end] 범위를 구하고 해당 범위의 길이 중 최대 값이 정답이 된다.

시간복잡도는 O(|A|).




소스코드 : https://gist.github.com/fpdjsns/b1e8bac929cbfdff9c1bb30371df4653

320x100

댓글