【发布时间】:2022-01-23 22:38:12
【问题描述】:
我有一个偶数大小的数组,现在我想从数组中只删除 2 个元素并找到相邻对,使得相邻元素之间的差异之和最小。
示例:
array size even say 8.
array elements : 1,3,4,6,3,4,100,200
Ans:
5
说明:
这里我将删除 100 和 200,这样我就可以得到相邻的最小总和。所以剩下的元素是 [1,3,4,6,3,4] 我选择的相邻对是:(1 3) = |3-1| = 2 , (4 3) = |4-3|=1, (6 4) = |6-4| = 2。所以总和 = 2 + 1 + 2 = 5
示例:
array size even say 4.
array elements : 1,50,51,60
Ans:
1
说明:这里我将删除 1 和 60,这样我将得到最小的和。 所以剩下的元素是 [50, 51],与相邻的 [50 51] = 1 相同。我的代码在这种情况下将失败并返回 49。
如何在java中实现这一点?
我尝试像这样对元素进行排序,但这对于所有类型的输入都不是正确的方法。
public static int process(int[] a) {
int n = a.length;
int n1 = n/2-1;
Arrays.sort(arr);
int sum = 0;
for(int i=0; i<n1*2; i+=2) {
sum += a[i+1] - a[i];
}
return sum;
}