LeetCode之Rectangle Overlap(Kotlin)
問題: A rectangle is represented as a list [x1, y1, x2, y2], where (x1, y1) are the coordinates of its bottom-left corner, and (x2, y2) are the coordinates of its top-right corner. Two rectangles overlap if the area of their intersection is positive.To be clear, two rectangles that only touch at the corner or edges do not overlap. Given two (axis-aligned) rectangles, return whether they overlap.
Example 1: Input: rec1 = [0,0,2,2], rec2 = [1,1,3,3] Output: true Example 2: Input: rec1 = [0,0,1,1], rec2 = [1,0,2,1] Output: false Notes: Both rectangles rec1 and rec2 are lists of 4 integers. All coordinates in rectangles will be between -10^9 and 10^9. 複製程式碼
方法: 先判斷垂直線的相對關係,然後再根據水平線的相對關係分情況判斷是否有相交,根據不同的邏輯分支輸出最終結果。
具體實現:
class RectangleOverlap { fun isRectangleOverlap(rec1: IntArray, rec2: IntArray): Boolean { val x1 = rec1[0] val y1 = rec1[1] val x2 = rec1[2] val y2 = rec1[3] val x3 = rec2[0] val y3 = rec2[1] val x4 = rec2[2] val y4 = rec2[3] if(x1 >= x3 && x1 < x4) { if (y1 >= y3 && y1 < y4) { return true } else if (y1 >= y4) { return false } else { if (y2 > y3) { return true } else { return false } } } else if (x1 >= x4) { return false } else { if (x2 > x3) { if (y1 >= y3 && y1 < y4) { return true } else if (y1 >= y4) { return false } else { if (y2 > y3) { return true } else { return false } } } else { return false } } } } fun main(args: Array<String>) { val rectangleOverlap = RectangleOverlap() println(rectangleOverlap.isRectangleOverlap(intArrayOf(-7,-3,10,5), intArrayOf(-6,-5,5,10))) } 複製程式碼
有問題隨時溝通