🔒Algorithm
LeetCode [JS] > 1004. Max Consecutive Ones III
devWarrior
2025. 5. 5. 20:14
📌문제링크
📌문제풀이
이 문제는 sliding window로 접근해서 풀면된다. 시간 복잡도는 O(n) 이며 right를 1씩 증가하면서 zeroCnt 가 > k 이면 zeroCnt가 k를 넘지 않을때까지 left를 이동한뒤 right-left+1을 이용하여 1의 갯수를 구할 수 있다.
// time complexity O(n)
/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
var longestOnes = function (nums, k) {
let left = 0;
let zeroCnt = 0;
let max = 0;
for (let right = 0; right < nums.length; ++right) {
if (nums[right] === 0) {
++zeroCnt;
}
if (zeroCnt > k) {
while (nums[left] !== 0) {
++left;
}
++left;
--zeroCnt;
}
let cnt = right - left + 1;
max = Math.max(cnt, max);
}
return max;
};