|
24 | 24 |
|
25 | 25 | <!-- 这里可写通用的实现逻辑 -->
|
26 | 26 |
|
| 27 | +计算重叠部分的面积,注意考虑没有重叠的情况 |
| 28 | + |
27 | 29 | <!-- tabs:start -->
|
28 | 30 |
|
29 | 31 | ### **Python3**
|
30 | 32 |
|
31 | 33 | <!-- 这里可写当前语言的特殊实现逻辑 -->
|
32 | 34 |
|
33 | 35 | ```python
|
34 |
| - |
| 36 | +class Solution: |
| 37 | + def computeArea(self, ax1: int, ay1: int, ax2: int, ay2: int, bx1: int, by1: int, bx2: int, by2: int) -> int: |
| 38 | + a = (ax2 - ax1) * (ay2 - ay1) |
| 39 | + b = (bx2 - bx1) * (by2 - by1) |
| 40 | + width = min(ax2, bx2) - max(ax1, bx1) |
| 41 | + height = min(ay2, by2) - max(ay1, by1) |
| 42 | + return a + b - max(height, 0) * max(width, 0) |
35 | 43 | ```
|
36 | 44 |
|
37 | 45 | ### **Java**
|
38 | 46 |
|
39 | 47 | <!-- 这里可写当前语言的特殊实现逻辑 -->
|
40 | 48 |
|
41 | 49 | ```java
|
| 50 | +class Solution { |
| 51 | + public int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) { |
| 52 | + int a = (ax2 - ax1) * (ay2 - ay1); |
| 53 | + int b = (bx2 - bx1) * (by2 - by1); |
| 54 | + int width = Math.min(ax2, bx2) - Math.max(ax1, bx1); |
| 55 | + int height = Math.min(ay2, by2) - Math.max(ay1, by1); |
| 56 | + return a + b - Math.max(height, 0) * Math.max(width, 0); |
| 57 | + } |
| 58 | +} |
| 59 | +``` |
42 | 60 |
|
| 61 | +### **Go** |
| 62 | + |
| 63 | +```go |
| 64 | +func computeArea(ax1 int, ay1 int, ax2 int, ay2 int, bx1 int, by1 int, bx2 int, by2 int) int { |
| 65 | + a := (ax2 - ax1) * (ay2 - ay1) |
| 66 | + b := (bx2 - bx1) * (by2 - by1) |
| 67 | + width := min(ax2, bx2) - max(ax1, bx1) |
| 68 | + height := min(ay2, by2) - max(ay1, by1) |
| 69 | + return a + b - max(height, 0)*max(width, 0) |
| 70 | +} |
| 71 | + |
| 72 | +func max(a, b int) int { |
| 73 | + if a > b { |
| 74 | + return a |
| 75 | + } |
| 76 | + return b |
| 77 | +} |
| 78 | + |
| 79 | +func min(a, b int) int { |
| 80 | + if a < b { |
| 81 | + return a |
| 82 | + } |
| 83 | + return b |
| 84 | +} |
43 | 85 | ```
|
44 | 86 |
|
45 | 87 | ### **...**
|
|
0 commit comments