836. 矩形重叠

题目描述:

  矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。矩形的上下边平行于 x 轴,左右边平行于 y 轴。如果相交的面积为 正 ,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形 rec1 和 rec2 。如果它们重叠,返回 true;否则,返回 false 。

 

解题思路:

  以一个矩形作为参考点,另一个矩形要想与它不重叠,只能出现在它的四周(边可以重叠)。如下图所示,实际上位于左上边就满足了左边部分跟上边部分两个条件。而题目给定的描述两端点的数组,正好代表了每条边的位置,x1表示左边,x2表示右边,y1表示下边,y2表示上边。

 

 

 

   我们以rec2描述的矩形作为参考矩形,那么可以比较rec1与rec2相对的两条边的位置来判定是否重叠。下面列出不重叠的情况:

  •   rec1位于rec2左面:rec1的x2(右边位置)必然小于等于rec2的x1(左边位置)
  •   rec1位于rec2右面:rec1的x1(左边位置)必然大于等于rec2的x2(右边位置)
  •   rec1位于rec2上面:rec1的y1(下边位置)必然大于等于rec2的y2(上边位置)
  •   rec1位于rec2下面:rec1的y2(上边位置)必然小于等于rec2的y1(下边位置)

 

var isRectangleOverlap = function(rec1, rec2) {
   if(rec1[2]<=rec2[0]||rec1[0]>=rec2[2]||rec1[1]>=rec2[3]||rec1[3]<=rec2[1]){ //不重叠的情况
       return false;
   }else{
       return true;
   }
};

 

posted @   ˙鲨鱼辣椒ゝ  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
点击右上角即可分享
微信分享提示