Даны два прямоугольника, найти, если данные два прямоугольника пересекаются или нет.
пример
Пример 1:
Input : l1 = [0, 8], r1 = [8, 0], l2 = [6, 6], r2 = [10, 0]
Output : true
Пример 2:
Input : l1 = [0, 8], r1 = [8, 0], l2 = [9, 6], r2 = [10, 0]
Output : false
уведомление
l1: Верхняя левая координата первого прямоугольника.
r1: Внизу справа координата первого прямоугольника.
l2: Вверху слева координата второго прямоугольника.
r2: Внизу справа координата второго прямоугольника.
l1! = r2 и l2! = r2
Анализ: думать о том, чтобы сделать начало, в котором вершина прямоугольника в другой прямоугольник внутри. Мы игнорировали здесь случай, как показано ниже. Таким образом, ключевой момент этой проблемы является найти перекрывающую часть, а затем увидеть, если перекрывание части полученных в силу.
![](https://img2018.cnblogs.com/blog/1699119/201905/1699119-20190527091349154-443670294.png)
⚠️ Примечание крайний случай! ! !
общественный класс Решение { / ** * @param l1: верхние левая координата первого прямоугольника * @param r1: нижний правый координата первого прямоугольника * @param l2: верхняя левая координата второго прямоугольника * @param r2: снизу - правая координата второго прямоугольника * @return: верно , если они перекрываются или ложь * / общественного логический doOverlap (точка l1, точка r1, точка l2, точка r2) { INT x1 = Math.max (l1.x, l2.x) ; INT х2 = Math.min (r1.x, r2.x); INT у1 = Math.max (r1.y, r2.y); INT у2 = Math.min (l1.y, l2.y); если (х2> = x1 && у2> = у1) { возвращает истину; } Еще { вернуться ложным; } } }