feat(work): add solution for LeetCode 1004 Max Consecutive Ones III

This commit is contained in:
Prad Nukala committed 2026-10-02 17:19:55 -04:00
1 parent cf6f09825a
commit f770408ea2
1 file changed
+57
@@ -0,0 +1,57 @@
"""
1004. Max Consecutive Ones III
Difficulty: Medium
https://leetcode.com/problems/max-consecutive-ones-iii/
──────────────────────────────────────────────────
Given a binary array nums and an integer k, return the maximum number
of consecutive 1's in the array if you can flip at most k 0's.
Example 1:
Input: nums = [1,1,1,0,0,0,1,1,1,1,0], k = 2
Output: 6
Explanation: [1,1,1,0,0,1,1,1,1,1,1]
Bolded numbers were flipped from 0 to 1. The longest subarray is
underlined.
Example 2:
Input: nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], k = 3
Output: 10
Explanation: [0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
Bolded numbers were flipped from 0 to 1. The longest subarray is
underlined.
Constraints:
• 1 <= nums.length <= 10^5
• nums[i] is either 0 or 1.
• 0 <= k <= nums.length
"""
class Solution:
def longestOnes(self, nums: list[int], k: int) -> int:
left = 0
cur = 0
ans = 0
for right in range(len(nums)):
if nums[right] == 0:
cur += 1
while cur > k:
if nums[left] == 0:
cur -= 1
left += 1
ans = max(ans, right - left + 1)
return ans