Find the minimum and maximum sum of N-1 elements of the array
Last Updated :
21 Dec, 2022
Given an unsorted array A of size N, the task is to find the minimum and maximum values that can be calculated by adding exactly N-1 elements.
Examples:
Input: a[] = {13, 5, 11, 9, 7}
Output: 32 40
Explanation: Minimum sum is 5 + 7 + 9 + 11 = 32 and maximum sum is 7 + 9 + 11 + 13 = 40.
Input: a[] = {13, 11, 45, 32, 89, 21}
Output: 122 200
Explanation: Minimum sum is 11 + 13 + 21 + 32 + 45 = 122 and maximum sum is 13 + 21 + 32 + 45 + 89 = 200.
Input: a[] = {6, 3, 15, 27, 9}
Output: 33 57
Explanation: Minimum sum is 3 + 6 + 9 + 15 = 33 and maximum sum is 6 + 9 + 15 + 27 = 57.
Simple Approach:
- Sort the array in ascending order.
- Sum of the first N-1 elements in the array gives the minimum possible sum.
- Sum of the last N-1 elements in the array gives the maximum possible sum.
Below is the implementation of the above approach:
C++
#include<bits/stdc++.h>
using namespace std;
void minMax(vector< int >&arr){
int min_value = 0;
int max_value = 0;
int n = arr.size();
sort(arr.begin(),arr.end());
int j = n - 1;
for ( int i = 0; i < n - 1; i++)
{
min_value += arr[i];
max_value += arr[j];
j -= 1;
}
cout<<min_value<< " " <<max_value<<endl;
}
int main(){
vector< int >arr = {10, 9, 8, 7, 6, 5};
vector< int >arr1 = {100, 200, 300, 400, 500};
minMax(arr);
minMax(arr1);
}
|
Java
import java.util.*;
class GFG {
static void minMax( int [] arr)
{
long min_value = 0 ;
long max_value = 0 ;
int n = arr.length;
Arrays.sort(arr);
for ( int i = 0 , j = n - 1 ;
i < n - 1 ; i++, j--)
{
min_value += arr[i];
max_value += arr[j];
}
System.out.println(
min_value + " "
+ max_value);
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int [] arr = { 10 , 9 , 8 , 7 , 6 , 5 };
int [] arr1 = { 100 , 200 , 300 , 400 , 500 };
minMax(arr);
minMax(arr1);
}
}
|
Python3
def minMax(arr):
min_value = 0
max_value = 0
n = len (arr)
arr.sort()
j = n - 1
for i in range (n - 1 ):
min_value + = arr[i]
max_value + = arr[j]
j - = 1
print (min_value, " " ,max_value)
arr = [ 10 , 9 , 8 , 7 , 6 , 5 ]
arr1 = [ 100 , 200 , 300 , 400 , 500 ]
minMax(arr)
minMax(arr1)
|
C#
using System;
public class GFG{
static void minMax( int [] arr)
{
long min_value = 0;
long max_value = 0;
int n = arr.Length;
Array.Sort(arr);
int j = n - 1;
for ( int i = 0 ;i < n - 1; i++)
{
min_value += arr[i];
max_value += arr[j];
j--;
}
Console.WriteLine(
min_value + " "
+ max_value);
}
static public void Main (){
int [] arr = { 10, 9, 8, 7, 6, 5 };
int [] arr1 = { 100, 200, 300, 400, 500 };
minMax(arr);
minMax(arr1);
}
}
|
Javascript
<script>
function minMax(arr)
{
let min_value = 0;
let max_value = 0;
let n = arr.length;
arr.sort( function (a,b){ return a-b;});
for (let i = 0, j = n - 1;
i < n - 1; i++, j--)
{
min_value += arr[i];
max_value += arr[j];
}
document.write(
min_value + " "
+ max_value+ "<br>" );
}
let arr=[10, 9, 8, 7, 6, 5];
let arr1=[100, 200, 300, 400, 500 ];
minMax(arr);
minMax(arr1);
</script>
|
Output:
35 40
1000 1400
Time complexity: O(NlogN)
Auxiliary Space: O(1), As constant extra space is used.
Efficient Approach:
- Find the minimum and maximum element of the array.
- Calculate the sum of all the elements in the array.
- Excluding maximum element from the sum gives the minimum possible sum.
- Excluding the minimum element from the sum gives the maximum possible sum.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
static void miniMaxSum( int arr[], int n)
{
int minElement = 0, maxElement = 0, sum = 0;
minElement = arr[0];
maxElement = minElement;
sum = minElement;
for ( int i = 1; i < n; i++)
{
sum += arr[i];
if (arr[i] < minElement)
{
minElement = arr[i];
}
if (arr[i] > maxElement)
{
maxElement = arr[i];
}
}
cout << (sum - maxElement) << " "
<< (sum - minElement) << endl;
}
int main()
{
int a1[] = { 13, 5, 11, 9, 7 };
int n = sizeof (a1) / sizeof (a1[0]);
miniMaxSum(a1, n);
int a2[] = { 13, 11, 45, 32, 89, 21 };
n = sizeof (a2) / sizeof (a2[0]);
miniMaxSum(a2, n);
int a3[] = { 6, 3, 15, 27, 9 };
n = sizeof (a3) / sizeof (a3[0]);
miniMaxSum(a3, n);
}
|
Java
class GFG {
static void miniMaxSum( int [] arr)
{
int minElement = 0 , maxElement = 0 , sum = 0 ;
minElement = arr[ 0 ];
maxElement = minElement;
sum = minElement;
for ( int i = 1 ; i < arr.length; i++) {
sum += arr[i];
if (arr[i] < minElement) {
minElement = arr[i];
}
if (arr[i] > maxElement) {
maxElement = arr[i];
}
}
System.out.println((sum - maxElement) + " "
+ (sum - minElement));
}
public static void main(String args[])
{
int a1[] = { 13 , 5 , 11 , 9 , 7 };
miniMaxSum(a1);
int a2[] = { 13 , 11 , 45 , 32 , 89 , 21 };
miniMaxSum(a2);
int a3[] = { 6 , 3 , 15 , 27 , 9 };
miniMaxSum(a3);
}
}
|
Python3
def miniMaxSum(arr, n):
minElement = 0
maxElement = 0
sum = 0
minElement = arr[ 0 ]
maxElement = minElement
sum = minElement
for i in range ( 1 , n):
sum + = arr[i]
if (arr[i] < minElement):
minElement = arr[i]
if (arr[i] > maxElement):
maxElement = arr[i]
print ( sum - maxElement,
sum - minElement)
a1 = [ 13 , 5 , 11 , 9 , 7 ]
n = len (a1)
miniMaxSum(a1, n)
a2 = [ 13 , 11 , 45 , 32 , 89 , 21 ]
n = len (a2)
miniMaxSum(a2, n)
a3 = [ 6 , 3 , 15 , 27 , 9 ]
n = len (a3)
miniMaxSum(a3, n)
|
C#
using System;
class GFG{
static void miniMaxSum( int [] arr)
{
int minElement = 0, maxElement = 0, sum = 0;
minElement = arr[0];
maxElement = minElement;
sum = minElement;
for ( int i = 1; i < arr.Length; i++)
{
sum += arr[i];
if (arr[i] < minElement)
{
minElement = arr[i];
}
if (arr[i] > maxElement)
{
maxElement = arr[i];
}
}
Console.WriteLine((sum - maxElement) + " " +
(sum - minElement));
}
public static void Main()
{
int [] a1 = new int []{ 13, 5, 11, 9, 7 };
miniMaxSum(a1);
int [] a2 = new int []{ 13, 11, 45, 32, 89, 21 };
miniMaxSum(a2);
int [] a3 = new int []{ 6, 3, 15, 27, 9 };
miniMaxSum(a3);
}
}
|
Javascript
<script>
function miniMaxSum( arr, n)
{
var minElement = 0, maxElement = 0, sum = 0;
minElement = arr[0];
maxElement = minElement;
sum = minElement;
for ( var i = 1; i < n; i++)
{
sum += arr[i];
if (arr[i] < minElement)
{
minElement = arr[i];
}
if (arr[i] > maxElement)
{
maxElement = arr[i];
}
}
document.write((sum - maxElement)+ " " + (sum - minElement) + "<br>" );
}
var a1= [ 13, 5, 11, 9, 7 ];
miniMaxSum(a1, 5);
var a2 = [13, 11, 45, 32, 89, 21 ];
miniMaxSum(a2, 6);
var a3 = [ 6, 3, 15, 27, 9 ];
miniMaxSum(a3, 5);
</script>
|
Output
32 40
122 200
33 57
Time complexity: O(N)
Auxiliary Space: O(1), As constant extra space is used.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...