![]() |
VOOZH | about |
Given a binary array A[] of size N, the task is to find the minimum number of subarrays that need to be reversed to sort the binary array.
Examples:
Input: N = 4, A[]: {1, 0 , 0, 1}
Output: 1
Explanation: Reverse the array from 0 to 2 to change the array to {0, 0, 1, 1}Input: N = 4, A[]: {1, 0, 1 , 0}
Output: 2
Explanation: Reverse the array from 1 to 2 and then from 0 to 3
Approach: The idea to solve the problem is as follows:
To sort A[] iterate through the array and reverse every leftmost instance of a subarray of A[] with consecutive '1's and then consecutive '0's.
The count of all these subarrays can be found by counting the indices where A[i] = 1 and the next element i.e., A[i+1] = 0.
Follow the steps below to implement the idea:
Below is the implementation of the above approach.
2
Time Complexity: O(N)
Auxiliary Space: O(1)