Skip to content

Commit 8bfff44

Browse files
committed
feat: add solutions to lc problem: No.1401
No.1401.Circle and Rectangle Overlapping
1 parent 41e7a8a commit 8bfff44

File tree

6 files changed

+145
-2
lines changed

6 files changed

+145
-2
lines changed

solution/1400-1499/1401.Circle and Rectangle Overlapping/README.md

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,22 +60,75 @@
6060

6161
<!-- 这里可写通用的实现逻辑 -->
6262

63+
**方法一:数学**
64+
65+
计算矩形离圆最近的点和圆心的距离是否小于等于半径即可。
66+
6367
<!-- tabs:start -->
6468

6569
### **Python3**
6670

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

6973
```python
70-
74+
class Solution:
75+
def checkOverlap(self, radius: int, xCenter: int, yCenter: int, x1: int, y1: int, x2: int, y2: int) -> bool:
76+
dx = dy = 0
77+
if x1 > xCenter:
78+
dx = xCenter - x1
79+
elif x2 < xCenter:
80+
dx = xCenter - x2
81+
if y1 > yCenter:
82+
dy = yCenter - y1
83+
elif y2 < yCenter:
84+
dy = yCenter - y2
85+
return dx * dx + dy * dy <= radius * radius
7186
```
7287

7388
### **Java**
7489

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

7792
```java
93+
class Solution {
94+
public boolean checkOverlap(int radius, int xCenter, int yCenter, int x1, int y1, int x2, int y2) {
95+
int dx = x1 > xCenter ? x1 - xCenter : (x2 < xCenter ? xCenter - x2 : 0);
96+
int dy = y1 > yCenter ? y1 - yCenter : (y2 < yCenter ? yCenter - y2 : 0);
97+
return dx * dx + dy * dy <= radius * radius;
98+
}
99+
}
100+
```
101+
102+
### **C++**
103+
104+
```cpp
105+
class Solution {
106+
public:
107+
bool checkOverlap(int radius, int xCenter, int yCenter, int x1, int y1, int x2, int y2) {
108+
int dx = x1 > xCenter ? x1 - xCenter : (x2 < xCenter ? xCenter - x2 : 0);
109+
int dy = y1 > yCenter ? y1 - yCenter : (y2 < yCenter ? yCenter - y2 : 0);
110+
return dx * dx + dy * dy <= radius * radius;
111+
}
112+
};
113+
```
78114
115+
### **Go**
116+
117+
```go
118+
func checkOverlap(radius int, xCenter int, yCenter int, x1 int, y1 int, x2 int, y2 int) bool {
119+
dx, dy := 0, 0
120+
if x1 > xCenter {
121+
dx = x1 - xCenter
122+
} else if x2 < xCenter {
123+
dx = x2 - xCenter
124+
}
125+
if y1 > yCenter {
126+
dy = y1 - yCenter
127+
} else if y2 < yCenter {
128+
dy = y2 - yCenter
129+
}
130+
return dx*dx+dy*dy <= radius*radius
131+
}
79132
```
80133

81134
### **...**

solution/1400-1499/1401.Circle and Rectangle Overlapping/README_EN.md

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,62 @@
4848
### **Python3**
4949

5050
```python
51-
51+
class Solution:
52+
def checkOverlap(self, radius: int, xCenter: int, yCenter: int, x1: int, y1: int, x2: int, y2: int) -> bool:
53+
dx = dy = 0
54+
if x1 > xCenter:
55+
dx = xCenter - x1
56+
elif x2 < xCenter:
57+
dx = xCenter - x2
58+
if y1 > yCenter:
59+
dy = yCenter - y1
60+
elif y2 < yCenter:
61+
dy = yCenter - y2
62+
return dx * dx + dy * dy <= radius * radius
5263
```
5364

5465
### **Java**
5566

5667
```java
68+
class Solution {
69+
public boolean checkOverlap(int radius, int xCenter, int yCenter, int x1, int y1, int x2, int y2) {
70+
int dx = x1 > xCenter ? x1 - xCenter : (x2 < xCenter ? xCenter - x2 : 0);
71+
int dy = y1 > yCenter ? y1 - yCenter : (y2 < yCenter ? yCenter - y2 : 0);
72+
return dx * dx + dy * dy <= radius * radius;
73+
}
74+
}
75+
```
76+
77+
### **C++**
78+
79+
```cpp
80+
class Solution {
81+
public:
82+
bool checkOverlap(int radius, int xCenter, int yCenter, int x1, int y1, int x2, int y2) {
83+
int dx = x1 > xCenter ? x1 - xCenter : (x2 < xCenter ? xCenter - x2 : 0);
84+
int dy = y1 > yCenter ? y1 - yCenter : (y2 < yCenter ? yCenter - y2 : 0);
85+
return dx * dx + dy * dy <= radius * radius;
86+
}
87+
};
88+
```
5789
90+
### **Go**
91+
92+
```go
93+
func checkOverlap(radius int, xCenter int, yCenter int, x1 int, y1 int, x2 int, y2 int) bool {
94+
dx, dy := 0, 0
95+
if x1 > xCenter {
96+
dx = x1 - xCenter
97+
} else if x2 < xCenter {
98+
dx = x2 - xCenter
99+
}
100+
if y1 > yCenter {
101+
dy = y1 - yCenter
102+
} else if y2 < yCenter {
103+
dy = y2 - yCenter
104+
}
105+
return dx*dx+dy*dy <= radius*radius
106+
}
58107
```
59108

60109
### **...**
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class Solution {
2+
public:
3+
bool checkOverlap(int radius, int xCenter, int yCenter, int x1, int y1, int x2, int y2) {
4+
int dx = x1 > xCenter ? x1 - xCenter : (x2 < xCenter ? xCenter - x2 : 0);
5+
int dy = y1 > yCenter ? y1 - yCenter : (y2 < yCenter ? yCenter - y2 : 0);
6+
return dx * dx + dy * dy <= radius * radius;
7+
}
8+
};
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
func checkOverlap(radius int, xCenter int, yCenter int, x1 int, y1 int, x2 int, y2 int) bool {
2+
dx, dy := 0, 0
3+
if x1 > xCenter {
4+
dx = x1 - xCenter
5+
} else if x2 < xCenter {
6+
dx = x2 - xCenter
7+
}
8+
if y1 > yCenter {
9+
dy = y1 - yCenter
10+
} else if y2 < yCenter {
11+
dy = y2 - yCenter
12+
}
13+
return dx*dx+dy*dy <= radius*radius
14+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class Solution {
2+
public boolean checkOverlap(int radius, int xCenter, int yCenter, int x1, int y1, int x2, int y2) {
3+
int dx = x1 > xCenter ? x1 - xCenter : (x2 < xCenter ? xCenter - x2 : 0);
4+
int dy = y1 > yCenter ? y1 - yCenter : (y2 < yCenter ? yCenter - y2 : 0);
5+
return dx * dx + dy * dy <= radius * radius;
6+
}
7+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution:
2+
def checkOverlap(self, radius: int, xCenter: int, yCenter: int, x1: int, y1: int, x2: int, y2: int) -> bool:
3+
dx = dy = 0
4+
if x1 > xCenter:
5+
dx = xCenter - x1
6+
elif x2 < xCenter:
7+
dx = xCenter - x2
8+
if y1 > yCenter:
9+
dy = yCenter - y1
10+
elif y2 < yCenter:
11+
dy = yCenter - y2
12+
return dx * dx + dy * dy <= radius * radius

0 commit comments

Comments
 (0)