15. Flip Bits
The problem can be found at the following link: Question Link
My Approach
To solve this problem, I've utilized the concept a kind of sliding windows. In this approach, we initiate the tracking of the longest window that maximizes the benefits of performing flips to generate the highest possible count of 1s.
Initialize variables
zero,one, andmax_flipsto keep track of the count of zeros, ones, and maximum consecutive flips possible with positive amount of new 1's.Iterate through the input array
a.If the current element is 0, increment the
zerocount.If the current element is 1, decrement the
zerocount and increment theonecount.If
zerobecomes negative, reset it to 0.Update
max_flipswith the maximum ofzeroandmax_flips.
The result will be the sum of
max_flipsandone, indicating the maximum consecutive flips possible while allowing some flips of 1s to 0s.
Explanation with Example
Consider the input array: a = {1, 0, 0, 1, 0, 0, 1}.
Initially, zero = 0 , one = 0 , max_flips = 0
- index 0: zero = 0 , one = 1 , max_flips = 0
- index 1: zero = 1 , one = 1 , max_flips = 1
- index 2: zero = 2 , one = 1 , max_flips = 2
- index 3: zero = 1 , one = 2 , max_flips = 2
- index 4: zero = 2 , one = 2 , max_flips = 2
- index 5: zero = 3 , one = 2 , max_flips = 3
- index 6: zero = 2 , one = 3 , max_flips = 3The maximum benefit of consecutive flips that increase the count of 1's is 3, resulting in a total of 1's equal to3 + 3 = 6.
Time and Auxiliary Space Complexity
Time Complexity:
O(n), wherenis the length of the input array.Auxiliary Space Complexity: The algorithm uses a constant amount of extra space for variables. Therefore, the auxiliary space complexity is
O(1).
Code (C++)
class Solution {
public:
int maxOnes(int a[], int n)
{
int zero = 0, one = 0, max_flips = 0;
for (int i = 0; i < n; ++i) {
if (a[i] == 0)
zero++;
else{
zero--;
one++;
}
if (zero < 0)
zero = 0;
max_flips = max(zero, max_flips);
}
return max_flips + one;
}
};Contribution and Support
For discussions, questions, or doubts related to this solution, please visit our discussion section. We welcome your input and aim to foster a collaborative learning environment.
If you find this solution helpful, consider supporting us by giving a ⭐ star to the getlost01/gfg-potd repository.
Last updated
Was this helpful?