Find Array formed by adding each element of given array with largest element in new array to its left

Given an array A of size N, the task is to find the resultant array formed by adding each element of the given array with the largest element in the new array to its left.

Examples:

Input: arr[] = {5, 1, 6, -3, 2}
Output: {5, 6, 12, 9, 14}
Element A0: No element if present at its left. Hence the element at 0th index of the resultant array = 5
Element A1: Largest element to its left in the resultant array = 5. Hence the element at 1th index of the resultant array = 1 + 5 = 6
Element A2: Largest element to its left in the resultant array = 6. Hence the element at 2nd index of the resultant array = 6 + 6 = 12
Element A3: Largest element to its left in the resultant array = 12. Hence the element at 3rd index of the result array = -3 + 12 = 9
Element A4: Largest element to its left in the resultant array = 12. Hence the element at 4th index of the result array = 2 + 12 = 14
Therefore the resultant array = {5, 6, 12, 9, 14}

Input: arr[] = {40, 12, 62}
Output: {40, 52, 114}

Approach:
Inorder to find such array, each element of the new array will be computed one by one for each index in the range [0, N-1], according to the following rules:



  1. For the starting index, i.e. 0, the new array will be empty. Hence there won’t be any largest element. In this case, the element at 0th index in the given array is copied down in the new array, i.e.
    B0 = A0
    
    where A is the given array and 
          B is the new array
    
  2. For every other index in the range [1, N-1], first the largest element is found out to its left in the new array and then it is added to the corresponding element of the original array, i.e.,
    Bi = Ai + max(B0, B1, ..., Bi-1)
    
    where A is the given array, 
          B is the new array, and
          i is the current index
    

    Below is the implementation of the above approach:

    C++

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // C++ program to find Array formed by adding
    // each element of given array with largest
    // element in new array to its left
      
    #include <bits/stdc++.h>
    using namespace std;
      
    // Function to find array B from array 
    // A such that Ai = Bi – max(B0…Bi-1)
    void find_array(int a[], int n)
    {
        // Initialising as 0 as first 
        // element will remain same
        int x = 0;
          
        for (int i = 0; i < n; i++) {
      
            // restoring values of B
            a[i] += x;
      
            cout << a[i] << ' ';
              
            // Find max value
            x = max(x, a[i]);
        }
    }
      
    // Driver code
    int main()
    {
        int a[] = {40, 12, 62};
        int n = sizeof(a) / sizeof(a[0]);
          
        // Function call
        find_array(a, n);
          
        return 0;
    }

    chevron_right

    
    

    Java

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Java program to find Array formed by adding
    // each element of given array with largest
    // element in new array to its left
      
    public class GFG
    {
          
    // Function to find array B from array 
    // A such that Ai = Bi – max(B0…Bi-1)
    static void find_array(int []a, int n)
    {
        // Initialising as 0 as first 
        // element will remain same
        int x = 0;
          
        for (int i = 0; i < n; i++) {
      
            // restoring values of B
            a[i] += x;
      
            System.out.print(a[i] + " ");
              
            // Find max value
            x = Math.max(x, a[i]);
        }
    }
      
    // Driver code
    public static void main(String []args)
    {
        int []a = {40, 12, 62};
        int n = a.length ;
          
        // Function call
        find_array(a, n);
    }
    }
      
    // This code is contributed by Yash_R

    chevron_right

    
    

    Python3

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    # Python3 program to find Array formed by adding 
    # each element of given array with largest 
    # element in new array to its left 
      
    # Function to find array B from array 
    # A such that Ai = Bi – max(B0…Bi-1) 
    def find_array(a,  n) : 
      
        # Initialising as 0 as first 
        # element will remain same 
        x = 0
          
        for i in range(n) :
      
            # restoring values of B 
            a[i] += x; 
      
            print(a[i],end= ' '); 
              
            # Find max value 
            x = max(x, a[i]); 
      
    # Driver code 
    if __name__ == "__main__"
      
        a = [40, 12, 62]; 
        n = len(a); 
          
        # Function call 
        find_array(a, n); 
          
    # This code is contributed by Yash_R

    chevron_right

    
    

    C#

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // C# program to find Array formed by adding
    // each element of given array with largest
    // element in new array to its left
    using System;
      
    class gfg
    {
          
    // Function to find array B from array 
    // A such that Ai = Bi – max(B0…Bi-1)
    static void find_array(int []a, int n)
    {
        // Initialising as 0 as first 
        // element will remain same
        int x = 0;
          
        for (int i = 0; i < n; i++) {
      
            // restoring values of B
            a[i] += x;
      
            Console.Write(a[i] + " ");
              
            // Find max value
            x = Math.Max(x, a[i]);
        }
    }
      
    // Driver code
    public static void Main(string []args)
    {
        int []a = {40, 12, 62};
        int n = a.Length ;
          
        // Function call
        find_array(a, n);
    }
    }
      
    // This code is contributed by Yash_R

    chevron_right

    
    

    Output:

    40 52 114
    

    Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




    My Personal Notes arrow_drop_up

    Recommended Posts:


    Program Analyst Trainee,Cognizant

    If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

    Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



    Improved By : Yash_R

    Article Tags :
    Practice Tags :


    Be the First to upvote.


    Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.