g1001_1100.s1004_max_consecutive_ones_iii.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g1001_1100.s1004_max_consecutive_ones_iii;
// #Medium #Array #Binary_Search #Prefix_Sum #Sliding_Window
// #2022_02_27_Time_3_ms_(79.01%)_Space_68.2_MB_(65.91%)
/**
* 1004 - Max Consecutive Ones III\.
*
* Medium
*
* 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 <= 105
* * `nums[i]` is either `0` or `1`.
* * `0 <= k <= nums.length`
**/
public class Solution {
public int longestOnes(int[] a, int k) {
int result = 0;
int i = 0;
for (int j = 0; j < a.length; j++) {
if (a[j] == 0) {
k--;
}
while (k < 0) {
if (a[i] == 0) {
k++;
}
i++;
}
result = Math.max(result, j - i + 1);
}
return result;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy