Maximize length of Subarray of 1 's after removal of a pair of consecutive Array elements | Function to find the maximum subarray length of ones ; Stores the length , starting index and ending index of the subarrays ; S : starting index of the sub - array ; Traverse only continuous 1 s ; Calculate length of the sub - array ; v [ i ] [ 0 ] : Length of subarray v [ i ] [ 1 ] : Starting Index of subarray v [ i ] [ 2 ] : Ending Index of subarray ; If no such sub - array exists ; Traversing through the subarrays ; Update maximum length ; v [ i + 1 ] [ 1 ] - v [ i ] [ 2 ] - 1 : Count of zeros between the two sub - arrays ; Update length of both subarrays to the maximum ; Update length of both subarrays - 1 to the maximum ; Check if the last subarray has the maximum length ; Driver Code
function maxLen ( A , N ) { var v = [ ] ; for ( var i = 0 ; i < N ; i ++ ) { if ( A [ i ] == 1 ) { var s = i , len ; while ( A [ i ] == 1 && i < N ) { i ++ ; } len = i - s ; v . push ( [ len , s , i - 1 ] ) ; } } if ( v . length == 0 ) { return - 1 ; } var ans = 0 ; for ( var i = 0 ; i < v . length - 1 ; i ++ ) { ans = Math . max ( ans , v [ i ] [ 0 ] ) ; if ( v [ i + 1 ] [ 1 ] - v [ i ] [ 2 ] - 1 == 2 ) { ans = Math . max ( ans , v [ i ] [ 0 ] + v [ i + 1 ] [ 0 ] ) ; } if ( v [ i + 1 ] [ 1 ] - v [ i ] [ 2 ] - 1 == 1 ) { ans = Math . max ( ans , v [ i ] [ 0 ] + v [ i + 1 ] [ 0 ] - 1 ) ; } } ans = Math . max ( v [ v . length - 1 ] [ 0 ] , ans ) ; return ans ; } var arr = [ 1 , 0 , 1 , 0 , 0 , 1 ] ; var N = arr . length ; document . write ( maxLen ( arr , N ) ) ;