Change language

# Find the number of operations required for all array elements to be equal

| | |

Examples :

Input : arr = [1, 6, 1, 1, 1];
Output : 4
Explanation : Since arr becomes [2, 2, 2, 2, 2] after distribution from max element.

Input : arr = [2, 2, 3];
Output : -1
Explanation : Here arr becomes [3, 3, 1] after distribution.

Algorithm :

• Declare a temporary variable for store the number of operations performed.
• Find the maximum element of the given array and store its index value.
• Check if all elements are equal to the maximum element after n subtractions.
• Again check that each element is equal to the other elements and return n.

Below is the implementation of the above approach:

C++

 ` // C++ program for finding a number ` ` // operations required to perform ` ` // all array elements are equal ` ` # include "bits / stdC++. h" ` ` using ` ` namespace ` ` std; `   ` // Function for finding the maximum ` ` // element of this array ` ` int ` ` find_n (` ` int ` ` a [], ` ` int ` ` n) ` ` { ` ` int ` ` j = 0, k = 0, s = 0; `   ` int ` ` x = * max_element (a, a + n); ` ` int ` ` y = * min_element (a, a + n); ` ` for ` ` (` ` int ` ` i = 0; i "n; i ++) ` ` ` ` { ` ` ` ` if ` ` (a [i] == x) ` ` { ` ` s = i; ` ` break ` `; ` `} `   ` ` `} ` ` for ` ` (` ` int ` ` i = 0; i "n; i ++) ` ` { ` ` if ` ` (a [i]! = x & amp; & amp; a [i] "= y & amp; & amp; a [i]! = 0) ` ` { ` ` a [j] + = 1; ` ` a [s] - = 1; ` ` x - = 1; ` ` k + = 1; ` ` j + = 1; ` `} ` ` else ` ` if ` ` (a [i]! = 0) ` ` { ` ` j + = 1; ` `} ` `} ` ` `  ` for ` ` (` ` int ` ` i = 0; i "n; i ++) ` ` { ` ` ` ` if ` ` ( a [i]! = x) ` ` { ` ` k = -1; ` ` break ` `; ` `} ` `} ` ` ` ` return ` ` k; ` `} `   ` // Driver code ` ` int ` ` main () ` ` { `   ` int ` ` a [] = { 1, 6, 1, 1, 1}; ` ` int ` ` n = ` ` sizeof ` ` (a) / ` ` sizeof ` ` (a [0]); ` ` cout ""(find_n (a, n)); `   ` return ` ` 0; ` `} `   ` // This code is provided by princiraj1992 `

Java

 ` // Java program for finding the number ` ` // operations required to perform ` ` // all array elements are equal `   ` import ` ` java.util.Arrays; `   ` class ` ` GFG {` ` `  ` // Function for finding the maximum ` ` // element of this array ` ` static ` ` int ` ` find_n (` ` int ` ` [] a) {` ` ` ` int ` ` j = ` ` 0 ` `, k = ` ` 0 ` `, s = ` ` 0 ` `; `   ` int ` ` x = Arrays.stream (a) .max (). getAsInt (); ` ` int ` ` y = Arrays.stream (a) .min (). getAsInt (); ` ` for ` ` (` ` int ` ` i: a) {` ` if ` ` (a [i] == x) {` ` ` ` s = i; ` ` break ` `; ` `} `   ` ` `} ` ` for ` ` (` ` int ` ` i: a) {` ` if ` ` (i! = x & amp; & amp; i "= y & amp; & amp; i! = ` ` 0 ` `) {` ` ` ` a [j] + = ` ` 1 ` `; ` ` a [s] - = ` ` 1 ` `; ` ` x - = ` ` 1 ` `; ` ` k + = ` ` 1 ` `; ` ` j + = ` ` 1 ` `; ` `} ` ` else ` ` if ` ` (i! = ` ` 0 ` ` ) {` ` j + = ` ` 1 ` `; ` `} ` `} ` ` `  ` for ` ` (` ` int ` ` i: a) {` ` if ` ` (a [i]! = x) {` ` k = - ` ` 1 ` `; ` ` break ` `; ` `} ` `} ` ` ` ` return ` ` k; ` `} ` ` // Driver code ` ` `  ` ` ` public ` ` static ` ` void ` ` main (String [] args) {`   ` int ` ` [] a = {` ` 1 ` ` , ` ` 6 ` `, ` ` 1 ` `, ` ` 1 ` `, ` ` 1 ` `}; ` ` System.out.println (find_n (a)); ` `} `   `} `

python3

 ` # Python program to find the number ` ` # operations required to perform ` ` # all array elements are equal `   ` # Maximum search function ` ` # element of this array ` ` def ` ` find_n (a): ` ` j, k ` ` = ` ` 0 ` `, ` ` 0 ` ` `  ` ` ` x ` ` = ` ` max ` ` (a) ` ` for ` ` i ` ` in ` ` range ` ` (` ` len ` ` (a)): ` ` if ` ` (a [i] ` ` = ` ` = ` ` x): ` ` ` ` s ` ` = ` ` i ` ` break `   ` for i in a: `` if (i! = x and i " = min (a) and i! = ’’ ): a [j] + = 1 a [s] - = 1 x - = 1   k + = 1 j + = 1 elif (i! = ’’ ): j + = 1   for i in range ( len (a)):  if (a [i]! = x): k = - 1 break   return k   Driver code a = [ 1 , 6 , 1 , 1 , 1 ] print (find_n (a)) `

C #

PHP

 ` // C # program for finding the number ` ` // operations required to perform ` ` // all array elements are equal ` ` using ` ` System; ` ` using ` ` System.Linq; `   ` class ` ` GFG ` ` {` ` `  ` // Function for finding the maximum ` ` // element of this array ` ` static ` ` int ` ` find_n (` ` int ` ` [] a) ` ` {` ` int ` ` j = 0, k = 0, s = 0; `   ` int ` ` x = a.Max (); ` ` int ` ` y = a.Min (); ` ` foreach ` ` (` ` int ` ` i ` ` in ` ` a) ` ` {` ` if ` ` (a [i] == x) ` ` {` ` s = i; ` ` break ` `; ` `} `   ` ` `} `   ` foreach ` ` (` ` int ` ` i ` ` in ` ` a) ` ` ` ` {` ` if ` ` (i! = x & amp; & amp; i "= y & amp; & amp ; i! = 0) ` ` {` ` a [j] + = 1; ` ` a [s] - = 1; ` ` x - = 1; ` ` k + = 1; ` ` j + = 1; ` `} `   ` ` ` else ` ` if ` ` (i! = 0) ` ` { ` ` j + = 1; ` `} ` `} ` ` `  ` foreach ` ` (` ` int ` ` i ` ` in ` ` a) ` ` {` ` if ` ` (a [i]! = x) ` ` {` ` k = -1; ` ` break ` `; ` `} ` `} ` ` ` ` return ` ` k; ` `} `   ` // Driver code ` ` public ` ` static ` ` void ` ` Main () ` ` {` ` int ` ` [] a = {1, 6, 1, 1, 1 }; ` ` Console.Write (find_n (a)); ` `} ` `} `   ` // This code is provided by 29AjayKumar `
 ` & lt;? Php ` ` / / PHP program for finding the number ` ` // operations required to perform all ` ` // array elements Equal `   ` // Function to find the maximum element ` ` // this array ` ` function ` ` find_n (& amp; ` ` \$ a ` `) ` ` {` ` \$ j ` ` = 0; ` ` \$ k ` ` = 0; `   ` \$ x ` ` = max (` ` \$ a ` `); ` ` for ` ` (` ` \$ i ` ` = 0; ` ` \$ i ` ` "sizeof (` ` \$ a ` `); ` ` \$ i ` ` ++) ` ` {` ` if ` ` (` ` \$ a ` ` [` ` \$ i ` `] == ` ` \$ x ` `) ` ` {` ` \$ s ` ` = ` ` \$ i ` `; ` ` break ` `; ` `} ` `} ` ` `  ` for ` ` (` ` \$ i ` ` = 0; ` ` \$ i ` ` "sizeof (` ` \$ a ` `); ` ` \$ i ` ` ++) ` ` {` ` ` ` if ` ` (` ` \$ a ` ` [` ` \$ i ` `]! = ` ` \$ x ` ` and ` ` \$ a ` ` [ \$ i ] "= min ( \$ a ) and  `` \$ a [ \$ i ]! = 0) {   \$ a [ \$ j ] + = 1; \$ a [ \$ s ] - = 1; code class = "plain">) { \$ j = 0;  \$ k = 0;   \$ x = max ( \$ a ); for ( \$ i = 0; \$ i "sizeof ( \$ a ); \$ i ++) { if ( \$ a [ \$ i ] == \$ x ) { \$ s = \$ i ; break ; } } `