Index with Minimum sum of prefix and suffix sums in an Array

06 Nov, 2021
Given an array of integers. The task is to find the index in the array at which the value of prefixSum(i) + suffixSum(i) is minimum.Note:  
PrefixSum(i) = The sum of first i numbers of the array.
SuffixSum(i) = the sum of last N – i + 1 numbers of the array.
1-based indexing is considered for the array. That is an index of the first element in the array is 1.
 
Examples:  
Input : arr[] = {3, 5, 1, 6, 6 }
Output : 3
Explanation: 
Presum[] = {3, 8, 9, 15, 21}
Postsum[] = { 21, 18, 13, 12, 6}
Presum[] + Postsum[] = {24, 26, 22, 27, 27}
It is clear that the min value of sum of
prefix and suffix sum is 22 at index 3.

Input : arr[] = { 3, 2, 5, 7, 3 }
Output : 2
 
Given that we need to minimize the value of PrefixSum[i] + SuffixSum[i]. That is sum of first elements and elements from end. If observed carefully, it can be seen that:  
PrefixSum[i] + SuffixSum[i] = Sum of all elements in array + arr[i](Element at i-th index)  
Since sum of all elements of the array will be the same for every index, therefore the value of PrefixSum[i] + SuffixSum[i] will be minimum for the minimum value of arr[i]. Therefore, the task reduces to find only the index of the minimum element of the array.Below is the implementation of the above approach:  
C++
Java
Python 3
C#
PHP
Javascript
// C++ program to find the index with// minimum sum of prefix and suffix// sums in an Array #include <bits/stdc++.h>using namespace std; int indexMinSum(int arr[], int n){    // Initialization of the min value    int min = arr[0];    int index = 0;     // Find minimum element in the array    for (int i = 1; i < n; i++) {        if (arr[i] < min) {             // store the index of the            // current minimum element            min = arr[i];            index = i;        }    }     // return the index of min element    // 1-based index    return index + 1;} // Driver Codeint main(){    int arr[] = { 6, 8, 2, 3, 5 };    int n = sizeof(arr) / sizeof(arr[0]);    cout << indexMinSum(arr, n);    return 0;}
// Java program to find the index with// minimum sum of prefix and suffix// sums in an Array import java.io.*; class GFG { static int indexMinSum(int arr[], int n){    // Initialization of the min value    int min = arr[0];    int index = 0;     // Find minimum element in the array    for (int i = 1; i < n; i++) {        if (arr[i] < min) {             // store the index of the            // current minimum element            min = arr[i];            index = i;        }    }     // return the index of min element    // 1-based index    return index + 1;} // Driver Code    public static void main (String[] args) {    int arr[] = { 6, 8, 2, 3, 5 };    int n =arr.length;    System.out.println( indexMinSum(arr, n));    }}// This code is contributed by inder_verma..
# Python 3 program to find the index with# minimum sum of prefix and suffix# sums in an Array def indexMinSum(arr, n):     # Initialization of the min value    min = arr[0]    index = 0     # Find minimum element in the array    for i in range(1, n) :        if (arr[i] < min) :             # store the index of the            # current minimum element            min = arr[i]            index = i     # return the index of min element    # 1-based index    return index + 1 # Driver Codeif __name__ == "__main__":         arr = [ 6, 8, 2, 3, 5 ]    n = len(arr)    print(indexMinSum(arr, n)) # This code is contributed by ita_c
// C# program to find the index with// minimum sum of prefix and suffix// sums in an Array using System;class GFG{    static int indexMinSum(int []arr, int n)    {        // Initialization of the min value        int min = arr[0];        int index = 0;             // Find minimum element in the array        for (int i = 1; i < n; i++) {            if (arr[i] < min) {                     // store the index of the                // current minimum element                min = arr[i];                index = i;            }        }             // return the index of min element        // 1-based index        return index + 1;    }              // Driver Code    static void Main()    {        int []arr = { 6, 8, 2, 3, 5 };        int n =arr.Length;        Console.WriteLine(indexMinSum(arr, n));    }    // This code is contributed by ANKITRAI1}
<?php// PHP program to find the index with// minimum sum of prefix and suffix// sums in an Arrayfunction indexMinSum($arr, $n){    // Initialization of the    // min value    $min = $arr[0];    $index = 0;     // Find minimum element in    // the array    for ($i = 1; $i < $n; $i++)    {        if ($arr[$i] < $min)        {             // store the index of the            // current minimum element            $min = $arr[$i];            $index = $i;        }    }     // return the index of min    // element 1-based index    return ($index + 1);} // Driver Code$arr = array(6, 8, 2, 3, 5 );$n = sizeof($arr);echo indexMinSum($arr, $n); // This code is contributed by Sachin?>
<script> // JavaScript program to find the index with// minimum sum of prefix and suffix// sums in an Array         function indexMinSum(arr,n)    {        // Initialization of the min value    let min = arr[0];    let index = 0;       // Find minimum element in the array    for (let i = 1; i < n; i++) {        if (arr[i] < min) {               // store the index of the            // current minimum element            min = arr[i];            index = i;        }    }       // return the index of min element    // 1-based index    return index + 1;    }         // Driver Code    let arr=[6, 8, 2, 3, 5];    let n =arr.length;    document.write( indexMinSum(arr, n)); // This code is contributed by avanitrachhadiya2155 </script>
3
 
Time Complexity: O(N)
Auxiliary Space: O(1)
inderDuMCA
ankthon
Sach_Code
ukasp
avanitrachhadiya2155
rohan07
array-traversal-question
prefix-sum
Arrays
prefix-sum
Arrays
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.