3月打卡活动第18天 LeetCode第836题:矩形重叠(简单)

3月打卡活动第18天 LeetCode第836题:矩形重叠(简单)

  • 题目:矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形,判断它们是否重叠并返回结果。
    在这里插入图片描述
  • 解题思路:走了很多弯路,开始的时候把情况分的太细了。主要想好一定不重叠的横坐标情况,其他情况的判断标准相同。
class Solution {
    public boolean isRectangleOverlap(int[] rec1, int[] rec2) {
       if(rec1[2]<=rec2[0] || rec1[0]>=rec2[2]){
           return false;
       }else{
           if(rec1[3]>rec2[1] && rec1[1]<rec2[3]){
               return true;
           }else{
               return false;
           }
       }
    }
}

在这里插入图片描述

  • 题解做法1:这个想法把我的做法又压缩了一下
class Solution {
    public boolean isRectangleOverlap(int[] rec1, int[] rec2) {
        return !(rec1[2] <= rec2[0] ||   // left
                 rec1[3] <= rec2[1] ||   // bottom
                 rec1[0] >= rec2[2] ||   // right
                 rec1[1] >= rec2[3]);    // top
    }
}

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/rectangle-overlap/solution/ju-xing-zhong-die-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在这里插入图片描述

  • 题解做法2:投影的做法,判断重叠矩形的横纵坐标是否符合左<右,下<上
class Solution {
    public boolean isRectangleOverlap(int[] rec1, int[] rec2) {
        return (Math.min(rec1[2], rec2[2]) > Math.max(rec1[0], rec2[0]) &&
                Math.min(rec1[3], rec2[3]) > Math.max(rec1[1], rec2[1]));
    }
}

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/rectangle-overlap/solution/ju-xing-zhong-die-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在这里插入图片描述

发布了100 篇原创文章 · 获赞 12 · 访问量 2350

猜你喜欢

转载自blog.csdn.net/new_whiter/article/details/104936760