用一个数组记录区间重叠的次数,重叠了就是次数>=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);
}
}