[英]Return a null value in an int[] array
最近有人问我这个问题,我无法解决。 有两个int []数组,返回一个包含重叠范围的int []数组。 我们可以假设每个数组仅包含两个元素。 例如:
范围1 = [1,50],范围2 = [50,100],返回[50]
范围1 = [1,100],范围2 = [50,150],返回[50,100]
范围1 = [0,50],范围2 = [100,150],返回null
提供的方法签名为:
public static int[] range(int[] range1, int[] range2) { }
我陷入了如何在int []数组中返回“空”的问题。
任何帮助,将不胜感激。 谢谢。
这是我的方法:
Arrays.sort(range1);
Arrays.sort(range2);
int[] range = new int[2];
if (range1[1] > range2[0]) {
range[0] = range2[0];
range[1] = range1[1];
} else if (range1[1] == range2[0]) {
range[0] = range1[1];
} else if (range1[1] < range2[0]) {
// Didn't know what to put here
}
return range;
答案范围的开始是两个中最高的。 结束语是两者中最少的。 如果开始的结果大于结束的结果,则没有重叠,并且结果应为null:
public static int[] range(int[] range1, int[] range2) {
int start = Math.max(range1[0], range2[0]);
int end = Math.min(range1[1], range2[1]);
if (start < end) {
return new int[]{start, end};
} else if (start == end) {
return new int[]{start};
} else {
return null;
}
}
我认为您不需要进行最后的测试,因为如果fisrt条件或第二条件不满足,将返回空范围:
int[] range = new int[2];
if (range1[1] > range2[0]) {
range[0] = range2[0];
range[1] = range1[1];
} else if (range1[1] == range2[0]) {
range[0] = range1[1];
}
return range;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.