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
'알고리즘 문제 > Leetcode' 카테고리의 다른 글
[leetcode][1008] Construct Binary Search Tree from Preorder Traversal (0) | 2019.03.13 |
---|---|
[leetcode][998] Maximum Binary Tree II (0) | 2019.03.10 |
[leetcode][997] Find the Town Judge (0) | 2019.03.02 |
[leetcode][994] Rotting Oranges (0) | 2019.02.17 |
[leetcode][993] Cousins in Binary Tree (0) | 2019.02.17 |
댓글