From ec527bde7c44e907afa345152dd32855c0ec6834 Mon Sep 17 00:00:00 2001 From: YDZ Date: Fri, 4 Oct 2019 09:44:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20problem=20223?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../223. Rectangle Area.go | 14 ++++++ .../223. Rectangle Area_test.go | 49 +++++++++++++++++++ Algorithms/0223. Rectangle Area/README.md | 31 ++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 Algorithms/0223. Rectangle Area/223. Rectangle Area.go create mode 100644 Algorithms/0223. Rectangle Area/223. Rectangle Area_test.go create mode 100755 Algorithms/0223. Rectangle Area/README.md diff --git a/Algorithms/0223. Rectangle Area/223. Rectangle Area.go b/Algorithms/0223. Rectangle Area/223. Rectangle Area.go new file mode 100644 index 00000000..c3d604cc --- /dev/null +++ b/Algorithms/0223. Rectangle Area/223. Rectangle Area.go @@ -0,0 +1,14 @@ +package leetcode + +func computeArea(A int, B int, C int, D int, E int, F int, G int, H int) int { + X0, Y0, X1, Y1 := max(A, E), max(B, F), min(C, G), min(D, H) + return area(A, B, C, D) + area(E, F, G, H) - area(X0, Y0, X1, Y1) +} + +func area(x0, y0, x1, y1 int) int { + l, h := x1-x0, y1-y0 + if l <= 0 || h <= 0 { + return 0 + } + return l * h +} diff --git a/Algorithms/0223. Rectangle Area/223. Rectangle Area_test.go b/Algorithms/0223. Rectangle Area/223. Rectangle Area_test.go new file mode 100644 index 00000000..c7f8c7b9 --- /dev/null +++ b/Algorithms/0223. Rectangle Area/223. Rectangle Area_test.go @@ -0,0 +1,49 @@ +package leetcode + +import ( + "fmt" + "testing" +) + +type question223 struct { + para223 + ans223 +} + +// para 是参数 +// one 代表第一个参数 +type para223 struct { + A int + B int + C int + D int + E int + F int + G int + H int +} + +// ans 是答案 +// one 代表第一个答案 +type ans223 struct { + one int +} + +func Test_Problem223(t *testing.T) { + + qs := []question223{ + + question223{ + para223{-3, 0, 3, 4, 0, -1, 9, 2}, + ans223{45}, + }, + } + + fmt.Printf("------------------------Leetcode Problem 223------------------------\n") + + for _, q := range qs { + _, p := q.ans223, q.para223 + fmt.Printf("【input】:%v 【output】:%v\n", p, computeArea(p.A, p.B, p.C, p.D, p.E, p.F, p.G, p.H)) + } + fmt.Printf("\n\n\n") +} diff --git a/Algorithms/0223. Rectangle Area/README.md b/Algorithms/0223. Rectangle Area/README.md new file mode 100755 index 00000000..90968f8f --- /dev/null +++ b/Algorithms/0223. Rectangle Area/README.md @@ -0,0 +1,31 @@ +# [223. Rectangle Area](https://leetcode.com/problems/rectangle-area/) + + +## 题目: + +Find the total area covered by two **rectilinear** rectangles in a **2D** plane. + +Each rectangle is defined by its bottom left corner and top right corner as shown in the figure. + +![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/10/22/rectangle_area.png) + +**Example:** + + Input: A = -3, B = 0, C = 3, D = 4, E = 0, F = -1, G = 9, H = 2 + Output: 45 + +**Note:** + +Assume that the total area is never beyond the maximum possible value of **int**. + + + +## 题目大意 + +在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。每个矩形由其左下顶点和右上顶点坐标表示,如图所示。说明: 假设矩形面积不会超出 int 的范围。 + +## 解题思路 + + +- 给出两个矩形的坐标,求这两个矩形在坐标轴上覆盖的总面积。 +- 几何题,由于只有 2 个矩形,所以按照题意做即可。先分别求两个矩形的面积,加起来再减去两个矩形重叠的面积。