1
function getPrefixSumArray(s) {2
const prefixSumOfOnes = Array(s.length).fill(0);5
for (let x = 0; x < s.length; x++) {6
if (s[x] === "1") currentSum++;8
prefixSumOfOnes[x] = currentSum;11
return prefixSumOfOnes;14
var minFlipsMonoIncr = function (s) {15
const prefixSumOfOnes = getPrefixSumArray(s);17
let answer = prefixSumOfOnes[s.length - 1]; // Case where we want to change to '0000'19
for (let x = 0; x < s.length; x++) {20
const sizeOfRightHandSide = s.length - x;21
let numChangesRequired = null;24
// Case where we want to change to '1111'25
const numOfOnesToChangeToZero = 0;27
const numOfOnesOnRightHandSide = prefixSumOfOnes[s.length - 1];28
const numOfZerosToChangeToOne =29
sizeOfRightHandSide - numOfOnesOnRightHandSide;31
numChangesRequired = numOfOnesToChangeToZero + numOfZerosToChangeToOne;33
// Cases like '0111', '0011', '0001'34
const numOfOnesToChangeToZero = prefixSumOfOnes[x - 1];36
const numOfOnesOnRightHandSide =37
prefixSumOfOnes[s.length - 1] - prefixSumOfOnes[x - 1];38
const numOfZerosToChangeToOne =39
sizeOfRightHandSide - numOfOnesOnRightHandSide;41
numChangesRequired = numOfOnesToChangeToZero + numOfZerosToChangeToOne;44
answer = Math.min(answer, numChangesRequired);