小C和小U

115 阅读1分钟

用一个数组记录区间重叠的次数,重叠了就是次数>=2,再选中下标最大的计算就行。所以我们可以遍历三个区间分别记录,再从最大的下表向前找。

public class Main {
    public static int solution(int l1, int r1, int l2, int r2, int l3, int r3) {
        int big=Math.max(r1,Math.max(r2,r3));
        int [] arr=new int[big+1];
        int i;
        for(i=l1;i<=r1;i++){
            arr[i]++;
        }
        for(i=l2;i<=r2;i++){
            arr[i]++;
        }
        for(i=l3;i<=r3;i++){
            arr[i]++;
        }
        i=big;
        while(i>-1&&arr[i--]<2);
        i++;
        if(i==0)
        return -1;
        System.out.println(i);
        return 2*i;

    }   

    public static void main(String[] args) {
        System.out.println(solution(1, 3, 2, 4, 4, 6) == 8);
        System.out.println(solution(1, 2, 2, 3, 3, 4) == 6);
        System.out.println(solution(10, 20, 15, 25, 30, 40) == 40);
    }
}