标签:code time rect amp begin its put sort back
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 rectangles, return whether they overlap.
Input: rec1 = [0,0,2,2], rec2 = [1,1,3,3]
Output: true
Input: rec1 = [0,0,1,1], rec2 = [1,0,2,1]
Output: false
Both rectangles rec1
and rec2
are lists of 4 integers.
-10^9
and 10^9
.1 class Solution { 2 public: 3 bool isRectangleOverlap(vector<int>& rec1, vector<int>& rec2) { 4 vector<int> xx,yy; 5 xx.push_back(rec1[0]); 6 xx.push_back(rec1[2]); 7 xx.push_back(rec2[0]); 8 xx.push_back(rec2[2]); 9 yy.push_back(rec1[1]); 10 yy.push_back(rec1[3]); 11 yy.push_back(rec2[1]); 12 yy.push_back(rec2[3]); 13 std::sort(xx.begin(),xx.end()); 14 std::sort(yy.begin(),yy.end()); 15 for(int x = 0; x < 4;x++){ 16 for(int y = 0;y < 4;y++){ 17 if(2*xx[x]+1 < 2*rec2[2]&&2*xx[x]+1 > 2*rec2[0]&&2*yy[y]+1 > 2*rec2[1]&&2*yy[y]+1 < 2*rec2[3]){ 18 if(2*xx[x]+1 < 2*rec1[2]&&2*xx[x]+1 > 2*rec1[0]&&2*yy[y]+1 > 2*rec1[1]&&2*yy[y]+1 < 2*rec1[3]){ 19 return true; 20 } 21 } 22 } 23 } 24 return false; 25 } 26 };
A easier solution:
1 bool isRectangleOverlap(vector<int>& a, vector<int>& b) { 2 return !(a[2] <= b[0] || b[2] <= a[0] || a[3] <= b[1] || b[3] <= a[1]); 3 }
836. Rectangle Overlap ——weekly contest 85
标签:code time rect amp begin its put sort back
原文地址:https://www.cnblogs.com/jinjin-2018/p/9065112.html