LeetCode 题解工作台

矩形面积

给你 二维 平面上两个 由直线构成且边与坐标轴平行/垂直 的矩形,请你计算并返回两个矩形覆盖的总面积。 每个矩形由其 左下 顶点和 右上 顶点坐标表示: 第一个矩形由其左下顶点 (ax1, ay1) 和右上顶点 (ax2, ay2) 定义。 第二个矩形由其左下顶点 (bx1, by1) 和右上顶点 …

category

2

题型

code_blocks

6

代码语言

hub

3

相关题

当前训练重点

中等 · 数学·结合·几何

bolt

答案摘要

我们先计算出两个矩形各自的面积,记为 和 ,然后计算重叠的宽度 和高度 ,那么重叠的面积为 $max(width, 0) \times max(height, 0)$,最后将 , 和重叠面积相减即可。 时间复杂度 ,空间复杂度 。

Interview AiBox logo

Interview AiBox 实时 AI 助手,陪你讲清 数学·结合·几何 题型思路

试试 AiBox 面试助手arrow_forward
description

题目描述

给你 二维 平面上两个 由直线构成且边与坐标轴平行/垂直 的矩形,请你计算并返回两个矩形覆盖的总面积。

每个矩形由其 左下 顶点和 右上 顶点坐标表示:

  • 第一个矩形由其左下顶点 (ax1, ay1) 和右上顶点 (ax2, ay2) 定义。
  • 第二个矩形由其左下顶点 (bx1, by1) 和右上顶点 (bx2, by2) 定义。

 

示例 1:

Rectangle Area
输入:ax1 = -3, ay1 = 0, ax2 = 3, ay2 = 4, bx1 = 0, by1 = -1, bx2 = 9, by2 = 2
输出:45

示例 2:

输入:ax1 = -2, ay1 = -2, ax2 = 2, ay2 = 2, bx1 = -2, by1 = -2, bx2 = 2, by2 = 2
输出:16

 

提示:

  • -104 <= ax1 <= ax2 <= 104
  • -104 <= ay1 <= ay2 <= 104
  • -104 <= bx1 <= bx2 <= 104
  • -104 <= by1 <= by2 <= 104
lightbulb

解题思路

方法一:计算重叠面积

我们先计算出两个矩形各自的面积,记为 aabb,然后计算重叠的宽度 widthwidth 和高度 heightheight,那么重叠的面积为 max(width,0)×max(height,0)max(width, 0) \times max(height, 0),最后将 aa, bb 和重叠面积相减即可。

时间复杂度 O(1)O(1),空间复杂度 O(1)O(1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution:
    def computeArea(
        self,
        ax1: int,
        ay1: int,
        ax2: int,
        ay2: int,
        bx1: int,
        by1: int,
        bx2: int,
        by2: int,
    ) -> int:
        a = (ax2 - ax1) * (ay2 - ay1)
        b = (bx2 - bx1) * (by2 - by1)
        width = min(ax2, bx2) - max(ax1, bx1)
        height = min(ay2, by2) - max(ay1, by1)
        return a + b - max(height, 0) * max(width, 0)
speed

复杂度分析

指标
时间complexity is O(1) because only constant arithmetic operations are needed. Space complexity is O(1) since no additional data structures are used beyond a few variables for coordinates and overlap calculation.
空间Depends on the final approach
psychology

面试官常问的追问

外企场景
  • question_mark

    Expect clear handling of overlapping regions.

  • question_mark

    Look for edge cases where rectangles touch but do not overlap.

  • question_mark

    Check that the solution avoids negative overlap or double counting.

warning

常见陷阱

外企场景
  • error

    Forgetting to subtract the overlapping area, leading to inflated totals.

  • error

    Incorrectly calculating overlap when rectangles do not intersect.

  • error

    Confusing width and height computations with coordinate differences.

swap_horiz

进阶变体

外企场景
  • arrow_right_alt

    Computing total area for multiple rectangles, not just two.

  • arrow_right_alt

    Handling rectangles with floating-point coordinates instead of integers.

  • arrow_right_alt

    Finding the overlapping area only without computing total area.

help

常见问题

外企场景

矩形面积题解:数学·结合·几何 | LeetCode #223 中等