반응형
https://leetcode.com/problems/max-consecutive-ones-ii/
1. 2022/04/26 시도
소요시간: 10분
class Solution {
public int findMaxConsecutiveOnes(int[] nums) {
int prev = 0;
int counter = 0;
int max = 0;
for (int i=0; i<nums.length; i++) {
if (nums[i] == 0) {
max = Math.max(max, prev + counter);
prev = counter+1; // even if counter is 0, it can be 1 length
counter = 0;
} else {
counter++;
}
}
max = Math.max(max, prev + counter); // edge case like [...,0,1]
return max;
}
}
풀이 접근 과정
0이 나올 때, 이전 최대값을 기억해둔다.
- 앞에 아무것도 없다면 1이 이전값으로 세팅된다.
- 앞에 1이 있었다면 1의 갯수 + 1이 이전값으로 세팅된다.
1의 갯수는 temp에서 세어준다.
마지막에 순서대로 [ ... 0, 1]이 나온경우, 처리가 필요하므로 max값을 for문 밖에서 다시 한번 비교한다.
느낀점
- 눈으로 보면 0을 1로 치환하면 되는데 이걸 어떻게 코딩하느냐고 관건이었다.
- 이전 길이값만 잘 기억하면 풀 수 있겠다는 생각이 들어 위와 같이 코딩할 수 있었다.
알고리즘 정리노트: .leetcode(알고리즘 문제풀이 접근)
반응형
'알고리즘 풀이' 카테고리의 다른 글
.leetcode(448. Find All Numbers Disappeared in an Array) (0) | 2022.04.27 |
---|---|
.leetcode(414. Third Maximum Number) (0) | 2022.04.26 |
.leetcode(1051. Height Checker) (0) | 2022.04.26 |
.leetcode(27. Remove Element) (0) | 2022.04.26 |
.leetcode(905. Sort Array By Parity) (0) | 2022.04.25 |