Skip to content

Commit 73ad5a0

Browse files
committed
feat: add solutions to lc problem: No.0223.Rectangle Area
1 parent baa2b49 commit 73ad5a0

File tree

6 files changed

+118
-7
lines changed

6 files changed

+118
-7
lines changed

solution/0200-0299/0223.Rectangle Area/README.md

+43-1
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,64 @@
2424

2525
<!-- 这里可写通用的实现逻辑 -->
2626

27+
计算重叠部分的面积,注意考虑没有重叠的情况
28+
2729
<!-- tabs:start -->
2830

2931
### **Python3**
3032

3133
<!-- 这里可写当前语言的特殊实现逻辑 -->
3234

3335
```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)
3543
```
3644

3745
### **Java**
3846

3947
<!-- 这里可写当前语言的特殊实现逻辑 -->
4048

4149
```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+
```
4260

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+
}
4385
```
4486

4587
### **...**

solution/0200-0299/0223.Rectangle Area/README_EN.md

+41-1
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,53 @@
4040
### **Python3**
4141

4242
```python
43-
43+
class Solution:
44+
def computeArea(self, ax1: int, ay1: int, ax2: int, ay2: int, bx1: int, by1: int, bx2: int, by2: int) -> int:
45+
a = (ax2 - ax1) * (ay2 - ay1)
46+
b = (bx2 - bx1) * (by2 - by1)
47+
width = min(ax2, bx2) - max(ax1, bx1)
48+
height = min(ay2, by2) - max(ay1, by1)
49+
return a + b - max(height, 0) * max(width, 0)
4450
```
4551

4652
### **Java**
4753

4854
```java
55+
class Solution {
56+
public int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {
57+
int a = (ax2 - ax1) * (ay2 - ay1);
58+
int b = (bx2 - bx1) * (by2 - by1);
59+
int width = Math.min(ax2, bx2) - Math.max(ax1, bx1);
60+
int height = Math.min(ay2, by2) - Math.max(ay1, by1);
61+
return a + b - Math.max(height, 0) * Math.max(width, 0);
62+
}
63+
}
64+
```
4965

66+
### **Go**
67+
68+
```go
69+
func computeArea(ax1 int, ay1 int, ax2 int, ay2 int, bx1 int, by1 int, bx2 int, by2 int) int {
70+
a := (ax2 - ax1) * (ay2 - ay1)
71+
b := (bx2 - bx1) * (by2 - by1)
72+
width := min(ax2, bx2) - max(ax1, bx1)
73+
height := min(ay2, by2) - max(ay1, by1)
74+
return a + b - max(height, 0)*max(width, 0)
75+
}
76+
77+
func max(a, b int) int {
78+
if a > b {
79+
return a
80+
}
81+
return b
82+
}
83+
84+
func min(a, b int) int {
85+
if a < b {
86+
return a
87+
}
88+
return b
89+
}
5090
```
5191

5292
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
func computeArea(ax1 int, ay1 int, ax2 int, ay2 int, bx1 int, by1 int, bx2 int, by2 int) int {
2+
a := (ax2 - ax1) * (ay2 - ay1)
3+
b := (bx2 - bx1) * (by2 - by1)
4+
width := min(ax2, bx2) - max(ax1, bx1)
5+
height := min(ay2, by2) - max(ay1, by1)
6+
return a + b - max(height, 0)*max(width, 0)
7+
}
8+
9+
func max(a, b int) int {
10+
if a > b {
11+
return a
12+
}
13+
return b
14+
}
15+
16+
func min(a, b int) int {
17+
if a < b {
18+
return a
19+
}
20+
return b
21+
}
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
class Solution {
2-
public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
3-
long x = (long) Math.min(C, G) - Math.max(A, E);
4-
long y = (long) Math.min(D, H) - Math.max(B, F);
5-
int intersection = x > 0 && y > 0 ? (int) (x * y) : 0;
6-
return (C - A) * (D - B) + (G - E) * (H - F) - intersection;
2+
public int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {
3+
int a = (ax2 - ax1) * (ay2 - ay1);
4+
int b = (bx2 - bx1) * (by2 - by1);
5+
int width = Math.min(ax2, bx2) - Math.max(ax1, bx1);
6+
int height = Math.min(ay2, by2) - Math.max(ay1, by1);
7+
return a + b - Math.max(height, 0) * Math.max(width, 0);
78
}
89
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class Solution:
2+
def computeArea(self, ax1: int, ay1: int, ax2: int, ay2: int, bx1: int, by1: int, bx2: int, by2: int) -> int:
3+
a = (ax2 - ax1) * (ay2 - ay1)
4+
b = (bx2 - bx1) * (by2 - by1)
5+
width = min(ax2, bx2) - max(ax1, bx1)
6+
height = min(ay2, by2) - max(ay1, by1)
7+
return a + b - max(height, 0) * max(width, 0)
Loading

0 commit comments

Comments
 (0)