问题描述:给你两个各包含四个数字的数组。每个数组前两个数字表示长方形左下角的坐标。后两个数字代表右上角坐标。判断这两个矩形是否相交。
原答案:
public boolean isRectangleOverlap(int[] rec1, int[] rec2) {
if(rec2[0]>=rec1[0]&&rec1[2]>rec2[0])
if(rec2[1]>=rec1[1]&&rec1[3]>rec2[1])
return true;
if(rec2[2]>rec1[0]&&rec1[2]>=rec2[2])
if(rec2[3]>rec1[1]&&rec1[3]>=rec2[1])
return true;
if(rec1[0]>=rec2[0]&&rec2[2]>rec1[0])
if(rec1[1]>=rec2[1]&&rec2[3]>rec1[1])
return true;
if(rec1[2]>rec2[0]&&rec2[2]>=rec1[2])
if(rec1[3]>rec2[1]&&rec2[3]>=rec1[1])
return true;
return false;
}
最佳答案:
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
}
不得不说这答案还真是简单。
本文介绍了一种简洁高效的矩形重叠判断算法。通过比较两个矩形的左右上下边界来快速判断它们是否存在交集。该算法适用于各种需要判断矩形重叠的应用场景。
732

被折叠的 条评论
为什么被折叠?



