Skip to content
Related Articles
Open in App
Not now

Related Articles

Find the element whose multiplication with -1 makes array sum 0

Improve Article
Save Article
Like Article
  • Last Updated : 12 Sep, 2022
Improve Article
Save Article
Like Article

Given an array of N integers. The task is to find the smallest index of an element such that when multiplied by -1 the sum of whole array becomes 0. If there is no such index return -1.

Examples: 

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

Input : arr[] = {5, 3, 6, -7, -4}
Output : -1

Naive Approach: The simple solution will be to take each element, multiply it by -1 and check if the new sum is 0. This algorithm works in O(N2).

Efficient Approach: If we take S as our initial sum of the array and we multiply current element Ai by -1 then the new sum will become S – 2*Ai and this should be equal to 0. So when for the first time S = 2*Ai then the current index is our required and if no element satisfies the condition then our answer will be -1. The time complexity of this algorithm is O(N).

Implementation:

C++




// C++ program to find minimum index
// such that sum becomes 0 when the
// element is multiplied by -1
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to find minimum index
// such that sum becomes 0 when the
// element is multiplied by -1
int minIndex(int arr[], int n)
{
    // Find array sum
    int sum = 0;
    for (int i = 0; i < n; i++)
        sum += arr[i];
 
    // Find element with value equal to sum/2
    for (int i = 0; i < n; i++) {
 
        // when sum is equal to 2*element
        // then this is our required element
        if (2 * arr[i] == sum)
            return (i + 1);
    }
 
    return -1;
}
 
// Driver code
int main()
{
    int arr[] = { 1, 3, -5, 3, 4 };
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << minIndex(arr, n) << endl;
    return 0;
}

Java




// Java program to find minimum index
// such that sum becomes 0 when the
// element is multiplied by -1
 
import java.io.*;
 
class GFG {
    
// Function to find minimum index
// such that sum becomes 0 when the
// element is multiplied by -1
 static int minIndex(int arr[], int n)
{
    // Find array sum
    int sum = 0;
    for (int i = 0; i < n; i++)
        sum += arr[i];
 
    // Find element with value equal to sum/2
    for (int i = 0; i < n; i++) {
 
        // when sum is equal to 2*element
        // then this is our required element
        if (2 * arr[i] == sum)
            return (i + 1);
    }
 
    return -1;
}
 
// Driver code
 
 
    public static void main (String[] args) {
            int []arr = { 1, 3, -5, 3, 4 };
    int n =arr.length;
    System.out.print( minIndex(arr, n));
    }
}
 
// This code is contributed by anuj_67..

Python 3




# Python 3 program to find minimum index
# such that sum becomes 0 when the
# element is multiplied by -1
 
# Function to find minimum index
# such that sum becomes 0 when the
# element is multiplied by -1
def minIndex(arr, n):
 
    # Find array sum
    sum = 0
    for i in range (0, n):
        sum += arr[i]
 
    # Find element with value
    # equal to sum/2
    for i in range(0, n):
 
        # when sum is equal to 2*element
        # then this is our required element
        if (2 * arr[i] == sum):
            return (i + 1)
 
    return -1
 
# Driver code
arr = [ 1, 3, -5, 3, 4 ];
n = len(arr);
print(minIndex(arr, n))
 
# This code is contributed
# by Akanksha Rai

C#




// C# program to find minimum index
// such that sum becomes 0 when the
// element is multiplied by -1
  
using System;
  
class GFG {
     
// Function to find minimum index
// such that sum becomes 0 when the
// element is multiplied by -1
 static int minIndex(int[] arr, int n)
{
    // Find array sum
    int sum = 0;
    for (int i = 0; i < n; i++)
        sum += arr[i];
  
    // Find element with value equal to sum/2
    for (int i = 0; i < n; i++) {
  
        // when sum is equal to 2*element
        // then this is our required element
        if (2 * arr[i] == sum)
            return (i + 1);
    }
  
    return -1;
}
  
// Driver code
  
  
    public static void Main () {
            int[] arr = { 1, 3, -5, 3, 4 };
    int n =arr.Length;
    Console.Write( minIndex(arr, n));
    }
}

PHP




<?php
// PHP program to find minimum index
// such that sum becomes 0 when the
// element is multiplied by -1
 
// Function to find minimum index
// such that sum becomes 0 when the
// element is multiplied by -1
function minIndex(&$arr, $n)
{
    // Find array sum
    $sum = 0;
    for ($i = 0; $i < $n; $i++)
        $sum += $arr[$i];
 
    // Find element with value equal to sum/2
    for ($i = 0; $i < $n; $i++)
    {
 
        // when sum is equal to 2*element
        // then this is our required element
        if (2 * $arr[$i] == $sum)
            return ($i + 1);
    }
    return -1;
}
 
// Driver code
$arr = array(1, 3, -5, 3, 4 );
$n = sizeof($arr);
echo (minIndex($arr, $n));
 
// This code is contributed
// by Shivi_Aggarwal
?>

Javascript




<script>
 
// Javascript program to find minimum index
// such that sum becomes 0 when the
// element is multiplied by -1   
 
// Function to find minimum index
// such that sum becomes 0 when the
// element is multiplied by -1
    function minIndex(arr , n)
    {
        // Find array sum
        var sum = 0;
        for (i = 0; i < n; i++)
            sum += arr[i];
 
        // Find element with value equal to sum/2
        for (i = 0; i < n; i++) {
 
            // when sum is equal to 2*element
            // then this is our required element
            if (2 * arr[i] == sum)
                return (i + 1);
        }
 
        return -1;
    }
 
    // Driver code
 
     
        var arr = [ 1, 3, -5, 3, 4 ];
        var n = arr.length;
        document.write(minIndex(arr, n));
 
// This code contributed by Rajput-Ji
 
</script>

Output

2

Complexity Analysis:

  • Time Complexity: O(N), where N represents the size of the given array.
  • Auxiliary Space: O(1), no extra space is required, so it is a constant.

My Personal Notes arrow_drop_up
Like Article
Save Article
Related Articles

Start Your Coding Journey Now!