因为只有三个区间,所以尝试三种组合。
取两个区间的交集即 L=max(l1,l2),R=min(r1,r2)
如果 L>R 则说明没有交集
否则有交集我们取交集中的最大值 R 即可。
时间复杂度:O(1)
C++
#include <bits/stdc++.h>
using namespace std;
int main()
{
    vector<int> l(3), r(3);
    for (int i = 0; i < 3; ++i) {
        cin >> l[i] >> r[i];
    }
    int ans = -1;
    for (int i = 0; i < 3; ++i)
        for (int j = i + 1; j < 3; ++j) {
            int L = max(l[i], l[j]);
            int R = min(r[i], r[j]);
            if (L <= R) {
                ans = max(ans, R);
            }
        }
    cout << ans << "\n";
    return 0;
}
Java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        long res = -1;
        long[] l = new long[3];
        long[] r = new long[3];
        for (int i = 0; i < 3; i++) {
            l[i] = in.nextLong();
            r[i] = in.nextLong();
        }
        for (int i = 0; i < 3; i++) {
            for (int j = i + 1; j < 3; j++) {
                long x = Math.max(l[i], l[j]);
                long y = Math.min(r[i], r[j]);
                if(x < y){
                    res = Math.max(res, y);
                }
            }
        }
        System.out.println(res);
    }
}
Python
import sys
input = lambda: sys.stdin.readline().strip()
write = lambda x: sys.stdout.write(str(x) + '\n')
l1, r1 = map(int, input().split())
l2, r2 = map(int, input().split())
l3, r3 = map(int, input().split())
def itsect(la, ra, lb, rb):
    li = max(la, lb)
    ri = min(ra, rb)
    if ri < li:
        li = -1
        ri = -1
    return li, ri
d_12 = itsect(l1, r1, l2, r2)
d_23 = itsect(l2, r2, l3, r3)
d_13 = itsect(l1, r1, l3, r3)
res = max(d_12[1], d_23[1], d_13[1])
write(res)
        小红有三个区间,现在他想从这三个区间中选择两个,然后选择一个数,这个数存在于这两个区间中。
现在小红想问你,他选择的这个数最大是多少。
第一行,两个整数 l1,r1(1≤l1≤r1≤109) 表示第一个区间。
第二行,两个整数 l2,r2(1≤l2≤r2≤109) 表示第二个区间。
第三行,两个整数 l3,r3(1≤l3≤r3≤109) 表示第三个区间。
一个数,表示可以选择的最大数。如果没有,输出 −1
输入
1 3
2 4
3 5
输出
4
说明
选择第二个区间和第三个区间,存在于这两个区间中的可以选择的最大数为 4 。
In following contests: