js-challenges icon indicating copy to clipboard operation
js-challenges copied to clipboard

矩形重叠

Open Sunny-117 opened this issue 3 years ago • 3 comments

Sunny-117 avatar Nov 08 '22 13:11 Sunny-117

/**
 * @param {number[]} rec1
 * @param {number[]} rec2
 * @return {boolean}
 */
var isRectangleOverlap = function (rec1, rec2) {
    //逆向思维,找不重叠的情况
    return !(
        rec1[2] <= rec2[0] || //矩形1的最右边小于2的最左边
        rec1[3] <= rec2[1] || //最上边小于2的最下边
        rec1[0] >= rec2[2] || //最右边大于2的最右边
        rec1[1] >= rec2[3]  //最下边大于2的最上边
    )
};

lxy-Jason avatar Nov 13 '22 09:11 lxy-Jason

小学数学题

/**
 * @param {number[]} rec1
 * @param {number[]} rec2
 * @return {boolean}
 */
var isRectangleOverlap = function(rec1, rec2) {
  // 找到两个矩形的中点
  let px1 = (rec1[0] + rec1[2])/2;
  let py1 = (rec1[1] + rec1[3])/2;
  let px2 = (rec2[0] + rec2[2])/2;
  let py2 = (rec2[1] + rec2[3])/2;
  // 获取两个矩形宽高的一半
  let d1 = px1 - rec1[0];
  let d2 = px2 - rec2[0];
  let d3 = py1 - rec1[1];
  let d4 = py2 - rec2[1];
  // 两个中点在的距离
  let dx = Math.abs(px1 - px2);
  let dy = Math.abs(py1 - py2);
  // 判断条件
  if (dx < d1 + d2 && dy < d3 + d4) return true;
  return false;
};

Achetto avatar Dec 08 '22 02:12 Achetto

/**
 * @param {number[]} rec1
 * @param {number[]} rec2
 * @return {boolean}
 */
var isRectangleOverlap = function(rec1, rec2) {
    if(rec1[0]<rec2[2]&&rec1[1]<rec2[3]&&rec1[2]>rec2[0]&&rec1[3]>rec2[1]) return true
    return false
};

Aurora-GSW avatar Apr 16 '24 08:04 Aurora-GSW