import java.util.*;
public class Gloves {
public int findMinimum(int n, int[] left, int[] right) {
int ret = 0;
for (int i = 0; i < left.length; i++) {
if (left[i] == 0) { //处理异常情况
ret += right[i];
right[i] = 0;
}
if (right[i] == 0) {
ret += left[i];
left[i] = 0;
}
}
int leftMin = Arrays.stream(left).filter(num -> num != 0)
.min().orElse(0);//找不到最小值返回0
int rightMin = Arrays.stream(right).filter(num -> num != 0)
.min().orElse(0);
int leftSum = Arrays.stream(left).sum();
int rightSum = Arrays.stream(right).sum();
if (leftSum < rightSum) {
return leftSum - leftMin + 2 + ret;
} else {
return rightSum - rightMin + 2 + ret;
}
}
}
主要分为异常情况和非异常情况,也就是含有0 和 不含有0 ,
含有0 我就吧对面的数加在ret上面也置换成0,然后就可转换成非异常情况,
然后求最小值的时候一定要忽略0,一定一定一定!!!!!