Thursday, July 4, 2024
HomeData ModellingData Structure & AlgorithmMake all elements of an array equal with the given operation

Make all elements of an array equal with the given operation

Given an array arr[] of n integers and an integer k. The task is to make all the elements of arr[] equal with the given operation. In a single operation, any non-negative number x ? k (can be a floating point value) can be added to any element of the array and k will be updated as k = k – x. Print Yes is possible else print No.

Examples: 

Input: k = 8, arr[] = {1, 2, 3, 4} 
Output: Yes 
1 + 3.5 = 4.5 
2 + 2.5 = 4.5 
3 + 1.5 = 4.5 
4 + 0.5 = 4.5 
3.5 + 2.5 + 1.5 + 0.5 = 8 = k

Input: k = 2, arr[] = {1, 2, 3, 4} 
Output: -1 

Approach: Since the task is to make all elements of the array equal and the total of additions has to be exactly k. There is only a single value at which we can make them all of these elements equal i.e. (sum(arr) + k) / n. If there is an element in the array which is already greater than this value then the answer does not exist otherwise print Yes.

Below is the implementation of the above approach:

C++




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function that returns true if all the elements
// of the array can be made equal
// with the given operation
bool isPossible(int n, int k, int arr[])
{
 
    // To store the sum of the array elements
    // and the maximum element from the array
    int sum = arr[0], maxVal = arr[0];
 
    for (int i = 1; i < n; i++) {
        sum += arr[i];
        maxVal = max(maxVal, arr[i]);
    }
 
    if ((float)maxVal > (float)(sum + k) / n)
        return false;
 
    return true;
}
 
// Driver code
int main()
{
    int k = 8;
    int arr[] = { 1, 2, 3, 4 };
    int n = sizeof(arr) / sizeof(arr[0]);
 
    if (isPossible(n, k, arr))
        cout << "Yes";
    else
        cout << "No";
 
    return 0;
}


Java




//Java implementation of the approach
import java.io.*;
 
class GFG
{
     
// Function that returns true if all
// the elements of the array can be
// made equal with the given operation
static boolean isPossible(int n, int k, int arr[])
{
 
    // To store the sum of the array elements
    // and the maximum element from the array
    int sum = arr[0];
    int maxVal = arr[0];
 
    for (int i = 1; i < n; i++)
    {
        sum += arr[i];
        maxVal = Math.max(maxVal, arr[i]);
    }
 
    if ((float)maxVal > (float)(sum + k) / n)
        return false;
 
    return true;
}
 
    // Driver code
    public static void main (String[] args)
    {
     
        int k = 8;
        int arr[] = { 1, 2, 3, 4 };
        int n = arr.length;
 
        if (isPossible(n, k, arr))
            System.out.println ("Yes");
        else
            System.out.println( "No");
    }
}
 
// This code is contributed by @Tushil.


Python3




# Python 3 implementation of the approach
 
# Function that returns true if all
# the elements of the array can be
# made equal with the given operation
def isPossible(n, k, arr):
     
    # To store the sum of the array elements
    # and the maximum element from the array
    sum = arr[0]
    maxVal = arr[0];
 
    for i in range(1, n):
        sum += arr[i]
        maxVal = max(maxVal, arr[i])
 
 
    if (int(maxVal)> int((sum + k) / n)):
        return False
 
    return True
 
# Driver code
if __name__ == '__main__':
    k = 8
    arr = [1, 2, 3, 4]
    n = len(arr)
 
    if (isPossible(n, k, arr)):
        print("Yes")
    else:
        print("No")
 
 
# This code is contributed by
# Surendra_Gangwar


C#




// C# implementation of the approach
using System;
 
class GFG
{
     
    // Function that returns true if all
    // the elements of the array can be
    // made equal with the given operation
    static bool isPossible(int n,
                        int k, int []arr)
    {
     
        // To store the sum of the array elements
        // and the maximum element from the array
        int sum = arr[0];
        int maxVal = arr[0];
         
        for (int i = 1; i < n; i++)
        {
            sum += arr[i];
            maxVal = Math.Max(maxVal, arr[i]);
        }
     
        if ((float)maxVal > (float)(sum + k) / n)
            return false;
     
        return true;
    }
     
    // Driver code
    public static void Main()
    {
         
        int k = 8;
        int []arr = { 1, 2, 3, 4 };
        int n = arr.Length;
     
        if (isPossible(n, k, arr))
            Console.WriteLine("Yes");
        else
            Console.WriteLine( "No");
    }
}
 
// This code is contributed by Ryuga


PHP




<?php
// PHP implementation of the approach
// Function that returns true if
// all the elements of the array
// can be made equal with the given operation
 
function isPossible($n, $k, $arr)
{
 
    // To store the sum of the array elements
    // and the maximum element from the array
    $sum = $arr[0];
    $maxVal = $arr[0];
 
    for ($i = 1; $i < $n; $i++)
    {
        $sum += $arr[$i];
        $maxVal = max($maxVal, $arr[$i]);
    }
 
    if ((float)$maxVal > (float)($sum + $k) / $n)
        return false;
 
    return true;
}
 
    // Driver code
    $k = 8;
    $arr = array( 1, 2, 3, 4 );
    $n = sizeof($arr) / sizeof($arr[0]);
 
    if (isPossible($n, $k, $arr))
        echo "Yes";
    else
        echo "No";
 
# This code is contributed by akt_miit.
?>


Javascript




<script>
 
// Javascript implementation of the above approach
 
// Function that returns true if all
// the elements of the array can be
// made equal with the given operation
function isPossible(n, k, arr)
{
 
    // To store the sum of the array elements
    // and the maximum element from the array
    let sum = arr[0];
    let maxVal = arr[0];
 
    for (let i = 1; i < n; i++)
    {
        sum += arr[i];
        maxVal = Math.max(maxVal, arr[i]);
    }
 
    if (maxVal > (sum + k) / n)
        return false;
 
    return true;
}
 
// driver program
     
        let k = 8;
        let arr = [ 1, 2, 3, 4 ];
        let n = arr.length;
 
        if (isPossible(n, k, arr))
            document.write ("Yes");
        else
            document.write( "No");
   
</script>


Output

Yes

Complexity Analysis:

  • Time Complexity: O(n)
  • Auxiliary Space: O(1)

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

Nokonwaba Nkukhwana
Experience as a skilled Java developer and proven expertise in using tools and technical developments to drive improvements throughout a entire software development life cycle. I have extensive industry and full life cycle experience in a java based environment, along with exceptional analytical, design and problem solving capabilities combined with excellent communication skills and ability to work alongside teams to define and refine new functionality. Currently working in springboot projects(microservices). Considering the fact that change is good, I am always keen to new challenges and growth to sharpen my skills.
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments