Minimum operations of given type to make all elements of a matrix equal | Function to return the minimum number of operations required ; Create another array to store the elements of matrix ; will not work for negative elements , so . . adding this ; adding this to handle negative elements too . ; Sort the array to get median ; To count the minimum operations ; If there are even elements , then there are two medians . We consider the best of two as answer . ; changed here as in case of even elements there will be 2 medians ; Return minimum operations required ; Driver code
function minOperations ( n , m , k , matrix ) { let arr = [ ] ; let mod ; if ( matrix [ 0 ] [ 0 ] < 0 ) { mod = k - ( Math . abs ( matrix [ 0 ] [ 0 ] ) % k ) ; } else { mod = matrix [ 0 ] [ 0 ] % k ; } for ( let i = 0 ; i < n ; ++ i ) { for ( let j = 0 ; j < m ; ++ j ) { arr . push ( matrix [ i ] [ j ] ) ; let val = matrix [ i ] [ j ] ; if ( val < 0 ) { let res = k - ( Math . abs ( val ) % k ) ; if ( res != mod ) { return - 1 ; } } else { let foo = matrix [ i ] [ j ] ; if ( foo % k != mod ) { return - 1 ; } } } } arr . sort ( function ( a , b ) { return a - b ; } ) ; let median = arr [ ( n * m ) / 2 ] ; let minOperations = 0 ; for ( let i = 0 ; i < n * m ; ++ i ) minOperations += Math . abs ( arr [ i ] - median ) / k ; if ( ( n * m ) % 2 == 0 ) { let median2 = arr [ ( ( n * m ) / 2 ) - 1 ] ; let minOperations2 = 0 ; for ( let i = 0 ; i < n * m ; ++ i ) minOperations2 += Math . abs ( arr [ i ] - median2 ) / k ; minOperations = Math . min ( minOperations , minOperations2 ) ; } return minOperations ; } let matrix = [ [ 2 , 4 , 6 ] , [ 8 , 10 , 12 ] , [ 14 , 16 , 18 ] , [ 20 , 22 , 24 ] ] ; let n = matrix . length ; let m = matrix [ 0 ] . length ; let k = 2 ; document . write ( minOperations ( n , m , k , matrix ) ) ;