mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 13:12:44 +00:00
feat(work): add solution for LeetCode 1004 Max Consecutive Ones III
This commit is contained in:
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
|
||||||
Reference in new issue
Block a user