Skip to content

Commit d2e595d

Browse files
committed
feat: update solutions to lc problem: No.0447.Number of Boomerangs
1 parent 0a70653 commit d2e595d

File tree

4 files changed

+51
-99
lines changed

4 files changed

+51
-99
lines changed

solution/0400-0499/0447.Number of Boomerangs/README.md

+17-33
Original file line numberDiff line numberDiff line change
@@ -62,21 +62,14 @@
6262
```python
6363
class Solution:
6464
def numberOfBoomerangs(self, points: List[List[int]]) -> int:
65-
n = len(points)
66-
if n < 3:
67-
return 0
68-
number = 0
69-
for i in range(n):
70-
distance_counter = collections.Counter()
71-
for j in range(n):
72-
if i == j:
73-
continue
74-
x1, y1 = points[i][0], points[i][1]
75-
x2, y2 = points[j][0], points[j][1]
76-
distance = (x1 - x2) ** 2 + (y1 - y2) ** 2
77-
distance_counter[distance] += 1
78-
number += sum([val * (val - 1) for val in distance_counter.values()])
79-
return number
65+
ans = 0
66+
for p in points:
67+
counter = collections.Counter()
68+
for q in points:
69+
distance = (p[0] - q[0]) * (p[0] - q[0]) + (p[1] - q[1]) * (p[1] - q[1])
70+
counter[distance] += 1
71+
ans += sum([val * (val - 1) for val in counter.values()])
72+
return ans
8073
```
8174

8275
### **Java**
@@ -86,27 +79,18 @@ class Solution:
8679
```java
8780
class Solution {
8881
public int numberOfBoomerangs(int[][] points) {
89-
int n = points.length;
90-
if (n < 3) {
91-
return 0;
92-
}
93-
int number = 0;
94-
for (int i = 0; i < n; ++i) {
95-
Map<Integer, Integer> distanceCounter = new HashMap<>();
96-
for (int j = 0; j < n; ++j) {
97-
if (i == j) {
98-
continue;
99-
}
100-
int x1 = points[i][0], y1 = points[i][1];
101-
int x2 = points[j][0], y2 = points[j][1];
102-
int distance = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
103-
distanceCounter.put(distance, distanceCounter.getOrDefault(distance, 0) + 1);
82+
int ans = 0;
83+
for (int[] p : points) {
84+
Map<Integer, Integer> counter = new HashMap<>();
85+
for (int[] q : points) {
86+
int distance = (p[0] - q[0]) * (p[0] - q[0]) + (p[1] - q[1]) * (p[1] - q[1]);
87+
counter.put(distance, counter.getOrDefault(distance, 0) + 1);
10488
}
105-
for (int val : distanceCounter.values()) {
106-
number += val * (val - 1);
89+
for (int val : counter.values()) {
90+
ans += val * (val - 1);
10791
}
10892
}
109-
return number;
93+
return ans;
11094
}
11195
}
11296
```

solution/0400-0499/0447.Number of Boomerangs/README_EN.md

+17-33
Original file line numberDiff line numberDiff line change
@@ -52,49 +52,33 @@
5252
```python
5353
class Solution:
5454
def numberOfBoomerangs(self, points: List[List[int]]) -> int:
55-
n = len(points)
56-
if n < 3:
57-
return 0
58-
number = 0
59-
for i in range(n):
60-
distance_counter = collections.Counter()
61-
for j in range(n):
62-
if i == j:
63-
continue
64-
x1, y1 = points[i][0], points[i][1]
65-
x2, y2 = points[j][0], points[j][1]
66-
distance = (x1 - x2) ** 2 + (y1 - y2) ** 2
67-
distance_counter[distance] += 1
68-
number += sum([val * (val - 1) for val in distance_counter.values()])
69-
return number
55+
ans = 0
56+
for p in points:
57+
counter = collections.Counter()
58+
for q in points:
59+
distance = (p[0] - q[0]) * (p[0] - q[0]) + (p[1] - q[1]) * (p[1] - q[1])
60+
counter[distance] += 1
61+
ans += sum([val * (val - 1) for val in counter.values()])
62+
return ans
7063
```
7164

7265
### **Java**
7366

7467
```java
7568
class Solution {
7669
public int numberOfBoomerangs(int[][] points) {
77-
int n = points.length;
78-
if (n < 3) {
79-
return 0;
80-
}
81-
int number = 0;
82-
for (int i = 0; i < n; ++i) {
83-
Map<Integer, Integer> distanceCounter = new HashMap<>();
84-
for (int j = 0; j < n; ++j) {
85-
if (i == j) {
86-
continue;
87-
}
88-
int x1 = points[i][0], y1 = points[i][1];
89-
int x2 = points[j][0], y2 = points[j][1];
90-
int distance = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
91-
distanceCounter.put(distance, distanceCounter.getOrDefault(distance, 0) + 1);
70+
int ans = 0;
71+
for (int[] p : points) {
72+
Map<Integer, Integer> counter = new HashMap<>();
73+
for (int[] q : points) {
74+
int distance = (p[0] - q[0]) * (p[0] - q[0]) + (p[1] - q[1]) * (p[1] - q[1]);
75+
counter.put(distance, counter.getOrDefault(distance, 0) + 1);
9276
}
93-
for (int val : distanceCounter.values()) {
94-
number += val * (val - 1);
77+
for (int val : counter.values()) {
78+
ans += val * (val - 1);
9579
}
9680
}
97-
return number;
81+
return ans;
9882
}
9983
}
10084
```
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,16 @@
11
class Solution {
22
public int numberOfBoomerangs(int[][] points) {
3-
int n = points.length;
4-
if (n < 3) {
5-
return 0;
6-
}
7-
int number = 0;
8-
for (int i = 0; i < n; ++i) {
9-
Map<Integer, Integer> distanceCounter = new HashMap<>();
10-
for (int j = 0; j < n; ++j) {
11-
if (i == j) {
12-
continue;
13-
}
14-
int x1 = points[i][0], y1 = points[i][1];
15-
int x2 = points[j][0], y2 = points[j][1];
16-
int distance = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
17-
distanceCounter.put(distance, distanceCounter.getOrDefault(distance, 0) + 1);
3+
int ans = 0;
4+
for (int[] p : points) {
5+
Map<Integer, Integer> counter = new HashMap<>();
6+
for (int[] q : points) {
7+
int distance = (p[0] - q[0]) * (p[0] - q[0]) + (p[1] - q[1]) * (p[1] - q[1]);
8+
counter.put(distance, counter.getOrDefault(distance, 0) + 1);
189
}
19-
for (int val : distanceCounter.values()) {
20-
number += val * (val - 1);
10+
for (int val : counter.values()) {
11+
ans += val * (val - 1);
2112
}
2213
}
23-
return number;
14+
return ans;
2415
}
2516
}
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,10 @@
11
class Solution:
22
def numberOfBoomerangs(self, points: List[List[int]]) -> int:
3-
n = len(points)
4-
if n < 3:
5-
return 0
6-
number = 0
7-
for i in range(n):
8-
distance_counter = collections.Counter()
9-
for j in range(n):
10-
if i == j:
11-
continue
12-
x1, y1 = points[i][0], points[i][1]
13-
x2, y2 = points[j][0], points[j][1]
14-
distance = (x1 - x2) ** 2 + (y1 - y2) ** 2
15-
distance_counter[distance] += 1
16-
number += sum([val * (val - 1) for val in distance_counter.values()])
17-
return number
3+
ans = 0
4+
for p in points:
5+
counter = collections.Counter()
6+
for q in points:
7+
distance = (p[0] - q[0]) * (p[0] - q[0]) + (p[1] - q[1]) * (p[1] - q[1])
8+
counter[distance] += 1
9+
ans += sum([val * (val - 1) for val in counter.values()])
10+
return ans

0 commit comments

Comments
 (0)