[LeetCode] Прямоугольник Перекрытие

Даны два прямоугольника, найти, если данные два прямоугольника пересекаются или нет.

пример

Пример 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

Анализ: думать о том, чтобы сделать начало, в котором вершина прямоугольника в другой прямоугольник внутри. Мы игнорировали здесь случай, как показано ниже. Таким образом, ключевой момент этой проблемы является найти перекрывающую часть, а затем увидеть, если перекрывание части полученных в силу.
 
⚠️ Примечание крайний случай! ! !
общественный класс Решение { 
    / ** 
     * @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) { 
            возвращает истину; 
        } Еще {
            вернуться ложным; 
        } 
    } 

}

  

рекомендация

отwww.cnblogs.com/yinger33/p/10928974.html