Maximize the difference between two subsets of a set with negatives
Last Updated :
12 Sep, 2022
Given an of integers of size N. The task is to separate these integers into two groups g1 and g2 such that (sum of elements of g1) – (sum of elements of g2) becomes maximum. Your task is to print the value of result. We may keep one subset as empty.
Examples:
Input : 3, 7, -4, 10, -11, 2
Output : 37
Explanation:
g1: 3, 7, 10, 2
g2: -4, -11
result = ( 3 + 7 + 10 + 2 ) – ( -4 + -11) = 22 – (-15) = 37
Input : 2, 2, -2, -2
Output : 8
The idea is to group integers according to their sign value i.e., we group positive integers as g1 and negative integers as g2.
Since, – ( -g2 ) = +g2
Therefore, result becomes g1 + |g2|.
C++
#include <bits/stdc++.h>
using namespace std;
int maxDiff( int arr[], int n)
{
int sum = 0;
for ( int i = 0; i < n; i++)
sum = sum + abs (arr[i]);
return sum;
}
int main()
{
int arr[] = { 3, 7, -4, 10, -11, 2 };
int n = sizeof (arr)/ sizeof (arr[0]);
cout << maxDiff(arr, n);
return 0;
}
|
Java
import java.util.*;
class solution
{
static int maxDiff( int arr[], int n)
{
int sum = 0 ;
for ( int i = 0 ; i < n; i++)
sum = sum + Math.abs(arr[i]);
return sum;
}
public static void main(String args[])
{
int []arr = { 3 , 7 , - 4 , 10 , - 11 , 2 };
int n = arr.length;
System.out.println(maxDiff(arr, n));
}
}
|
Python3
def maxDiff(arr, n) :
sum = 0
for i in range (n) :
sum + = abs (arr[i])
return sum
if __name__ = = "__main__" :
arr = [ 3 , 7 , - 4 , 10 , - 11 , 2 ]
n = len (arr)
print (maxDiff(arr, n))
|
C#
using System;
public class solution
{
public static int maxDiff( int [] arr, int n)
{
int sum = 0;
for ( int i = 0; i < n; i++)
{
sum = sum + Math.Abs(arr[i]);
}
return sum;
}
public static void Main( string [] args)
{
int [] arr = new int [] {3, 7, -4, 10, -11, 2};
int n = arr.Length;
Console.WriteLine(maxDiff(arr, n));
}
}
|
PHP
<?php
function maxDiff( $arr , $n )
{
$sum = 0;
for ( $i = 0; $i < $n ; $i ++)
$sum = $sum + abs ( $arr [ $i ]);
return $sum ;
}
$arr = array ( 3, 7, -4, 10, -11, 2 );
$n = sizeof( $arr );
echo maxDiff( $arr , $n );
?>
|
Javascript
<script>
function maxDiff(arr , n)
{
var sum = 0;
for (i = 0; i < n; i++)
sum = sum + Math.abs(arr[i]);
return sum;
}
var arr = [ 3, 7, -4, 10, -11, 2 ];
var n = arr.length;
document.write(maxDiff(arr, n));
</script>
|
Time Complexity: O(n)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...