繁体   English   中英

在int []数组中返回空值

[英]Return a null value in an int[] array

最近有人问我这个问题,我无法解决。 有两个int []数组,返回一个包含重叠范围的int []数组。 我们可以假设每个数组仅包含两个元素。 例如:

  1. 范围1 = [1,50],范围2 = [50,100],返回[50]

  2. 范围1 = [1,100],范围2 = [50,150],返回[50,100]

  3. 范围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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM