本文概述
- CPP
- Java
- Python3
- C#
- 的PHP
例子:
Input : arr[] = 1 2 3 4 5
m = 4
Output : 4
The maximum four elements are 2, 3, 4 and 5. The minimum four elements are
1, 2, 3 and 4. The difference between
two sums is (2 + 3 + 4 + 5) - (1 + 2
+ 3 + 4) = 4Input : arr[] = 5 8 11 40 15
m = 2
Output : 42
The difference is (40 + 15) - (5+ 8)
这个想法是先对数组排序, 然后找到前m个元素的和与后m个元素的和。最后返回两个和之间的差。
CPP
//C++ program to find difference
//between max and min sum of array
#include <
bits/stdc++.h>
using namespace std;
//utility function
int find_difference( int arr[], int n, int m)
{
int max = 0, min = 0;
//sort array
sort(arr, arr + n);
for ( int i = 0, j = n - 1;
i <
m;
i++, j--) {
min += arr[i];
max += arr[j];
}return (max - min);
}//Driver code
int main()
{
int arr[] = { 1, 2, 3, 4, 5 };
int n = sizeof (arr) /sizeof (arr[0]);
int m = 4;
cout <
<
find_difference(arr, n, m);
return 0;
}
Java
//Java program to find difference
//between max and min sum of array
import java.util.Arrays;
class GFG {
//utility function
static int find_difference( int arr[], int n, int m)
{
int max = 0 , min = 0 ;
//sort array
Arrays.sort(arr);
for ( int i = 0 , j = n - 1 ;
i <
m;
i++, j--) {
min += arr[i];
max += arr[j];
}return (max - min);
}//Driver program
public static void main(String arg[])
{
int arr[] = { 1 , 2 , 3 , 4 , 5 };
int n = arr.length;
int m = 4 ;
System.out.print(find_difference(arr, n, m));
}
}//This code is contributed by Anant Agarwal.
Python3
# Python program to
# find difference
# between max and
# min sum of arraydef find_difference(arr, n, m):
max = 0 ;
min = 0# sort array
arr.sort();
j = n - 1
for i in range (m):
min + = arr[i]
max + = arr[j]
j = j - 1return ( max - min )# Driver code
if __name__ = = "__main__" :
arr = [ 1 , 2 , 3 , 4 , 5 ]
n = len (arr)
m = 4print (find_difference(arr, n, m))# This code is contributed by
# Harshit Saini
C#
//C# program to find difference
//between max and min sum of array
using System;
class GFG {//utility function
static int find_difference( int [] arr, int n, int m)
{
int max = 0, min = 0;
//sort array
Array.Sort(arr);
for ( int i = 0, j = n - 1;
i <
m;
i++, j--) {
min += arr[i];
max += arr[j];
}return (max - min);
}//Driver program
public static void Main()
{
int [] arr = { 1, 2, 3, 4, 5 };
int n = arr.Length;
int m = 4;
Console.Write(find_difference(arr, n, m));
}
}//This code is contributed by nitin mittal
的PHP
<
?php
//PHP program to find difference
//between max and min sum of array//utility function
function find_difference( $arr , $n , $m )
{
$max = 0;
$min = 0;
//sort array
sort( $arr );
sort( $arr , $n );
for ( $i = 0, $j = $n - 1;
$i <
$m ;
$i ++, $j --)
{
$min += $arr [ $i ];
$max += $arr [ $j ];
}return ( $max - $min );
}//Driver code
{
$arr = array (1, 2, 3, 4, 5);
$n = sizeof( $arr ) /sizeof( $arr [0]);
$m = 4;
echo find_difference( $arr , $n , $m );
return 0;
}//This code is contributed by nitin mittal.
?>
输出如下:
4
我们可以使用下文中讨论的更有效的方法来优化上述解决方案。
【算法题(m个元素的两个子集之间的最大差)】数组中的k个最大(或最小)元素|添加了最小堆方法
推荐阅读
- 算法题(求两个大数的差)
- 反向索引与正向索引之间的差异
- C/C++中的int main()和int main(void)之间的区别()
- Redis Sentinel 实现高可用
- 高可用业务系统你必须知道的点
- 抓包青花瓷使用教程①
- 抓包青花瓷实战教程②
- Linux 使用 cp 命令强制覆盖功能
- Sharding-JDBC 几行配置实现读写分离~