在int []数组中返回null值

时间:2017-03-25 16:29:42

标签: java arrays

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

  1. range1 = [1,50],range2 = [50,100],return [50]

  2. range1 = [1,100],range2 = [50,150],返回[50,100]

  3. range1 = [0,50],range2 = [100,150],返回null

  4. 提供的方法签名是:

    public static int[] range(int[] range1, int[] range2) { }
    

    我不知道如何在int []数组中返回“null”。

    任何帮助将不胜感激。感谢。

    这是我的方法:

        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;
    

2 个答案:

答案 0 :(得分:0)

答案范围的开头是两者中最高的。结局是两者中最少的。如果结果开始大于结果结束,则没有重叠,结果应为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;
    }
}

答案 1 :(得分:0)

我认为你不需要做最后一次测试,因为如果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;