示例 3:
输入:rectangles = [[1,1,3,3],[3,1,4,2],[1,3,2,4],[2,2,4,4]]
输出:false
解释:因为中间有相交区域,虽然形成了矩形,但不是精确覆盖...times 10^4
rectangles[i].length = 4
-10^5 <= x_i, y_i, a_i, b_i <= 10^5
扫描线
将每个矩形
rectangles[i]
看做两条竖直方向的边...一个完美矩形的充要条件为:对于完美矩形的每一条非边缘的竖边,都「成对」出现(存在两条完全相同的左边和右边重叠在一起);对于完美矩形的两条边缘竖边,均独立为一条连续的(不重叠)的竖边。...如图(红色框的为「完美矩形的边缘竖边」,绿框的为「完美矩形的非边缘竖边」):
绿色:非边缘竖边必然有成对的左右两条完全相同的竖边重叠在一起;
红色:边缘竖边由于只有单边,必然不重叠,且连接成一条完成的竖边...「左边的线段」和「右边的线段」 (y1, y2)
List l1 = new ArrayList(), l2 = new ArrayList();