Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 2dc74b6

Browse files
authored
feat: update solutions to lc problems: No.0612,2316 (doocs#1852)
* No.0612.Shortest Distance in a Plane * No.2316.Count Unreachable Pairs of Nodes in an Undirected Graph
1 parent 6bf70ed commit 2dc74b6

File tree

10 files changed

+218
-234
lines changed

10 files changed

+218
-234
lines changed

solution/0600-0699/0612.Shortest Distance in a Plane/README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,8 @@ Point2D table:
6868
# Write your MySQL query statement below
6969
SELECT ROUND(SQRT(POW(p1.x - p2.x, 2) + POW(p1.y - p2.y, 2)), 2) AS shortest
7070
FROM
71-
Point2D AS p1,
72-
Point2D AS p2
73-
WHERE p1.x != p2.x OR p1.y != p2.y
71+
Point2D AS p1
72+
JOIN Point2D AS p2 ON p1.x != p2.x OR p1.y != p2.y
7473
ORDER BY 1
7574
LIMIT 1;
7675
```

solution/0600-0699/0612.Shortest Distance in a Plane/README_EN.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,8 @@ Point2D table:
5757
# Write your MySQL query statement below
5858
SELECT ROUND(SQRT(POW(p1.x - p2.x, 2) + POW(p1.y - p2.y, 2)), 2) AS shortest
5959
FROM
60-
Point2D AS p1,
61-
Point2D AS p2
62-
WHERE p1.x != p2.x OR p1.y != p2.y
60+
Point2D AS p1
61+
JOIN Point2D AS p2 ON p1.x != p2.x OR p1.y != p2.y
6362
ORDER BY 1
6463
LIMIT 1;
6564
```
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
# Write your MySQL query statement below
22
SELECT ROUND(SQRT(POW(p1.x - p2.x, 2) + POW(p1.y - p2.y, 2)), 2) AS shortest
33
FROM
4-
Point2D AS p1,
5-
Point2D AS p2
6-
WHERE p1.x != p2.x OR p1.y != p2.y
4+
Point2D AS p1
5+
JOIN Point2D AS p2 ON p1.x != p2.x OR p1.y != p2.y
76
ORDER BY 1
87
LIMIT 1;

solution/2300-2399/2316.Count Unreachable Pairs of Nodes in an Undirected Graph/README.md

Lines changed: 52 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -66,25 +66,22 @@
6666
```python
6767
class Solution:
6868
def countPairs(self, n: int, edges: List[List[int]]) -> int:
69-
def dfs(i):
70-
vis.add(i)
71-
cnt = 1
72-
for j in g[i]:
73-
if j not in vis:
74-
cnt += dfs(j)
75-
return cnt
76-
77-
g = defaultdict(list)
69+
def dfs(i: int) -> int:
70+
if vis[i]:
71+
return 0
72+
vis[i] = True
73+
return 1 + sum(dfs(j) for j in g[i])
74+
75+
g = [[] for _ in range(n)]
7876
for a, b in edges:
7977
g[a].append(b)
8078
g[b].append(a)
81-
vis = set()
79+
vis = [False] * n
8280
ans = s = 0
8381
for i in range(n):
84-
if i not in vis:
85-
t = dfs(i)
86-
ans += s * t
87-
s += t
82+
t = dfs(i)
83+
ans += s * t
84+
s += t
8885
return ans
8986
```
9087

@@ -94,36 +91,35 @@ class Solution:
9491

9592
```java
9693
class Solution {
97-
private boolean[] vis;
9894
private List<Integer>[] g;
95+
private boolean[] vis;
9996

10097
public long countPairs(int n, int[][] edges) {
101-
vis = new boolean[n];
10298
g = new List[n];
103-
Arrays.setAll(g, k -> new ArrayList<>());
99+
vis = new boolean[n];
100+
Arrays.setAll(g, i -> new ArrayList<>());
104101
for (var e : edges) {
105102
int a = e[0], b = e[1];
106103
g[a].add(b);
107104
g[b].add(a);
108105
}
109106
long ans = 0, s = 0;
110107
for (int i = 0; i < n; ++i) {
111-
if (!vis[i]) {
112-
long t = dfs(i);
113-
ans += s * t;
114-
s += t;
115-
}
108+
int t = dfs(i);
109+
ans += s * t;
110+
s += t;
116111
}
117112
return ans;
118113
}
119114

120115
private int dfs(int i) {
116+
if (vis[i]) {
117+
return 0;
118+
}
121119
vis[i] = true;
122120
int cnt = 1;
123121
for (int j : g[i]) {
124-
if (!vis[j]) {
125-
cnt += dfs(j);
126-
}
122+
cnt += dfs(j);
127123
}
128124
return cnt;
129125
}
@@ -136,30 +132,30 @@ class Solution {
136132
class Solution {
137133
public:
138134
long long countPairs(int n, vector<vector<int>>& edges) {
139-
vector<vector<int>> g(n);
135+
vector<int> g[n];
140136
for (auto& e : edges) {
141137
int a = e[0], b = e[1];
142-
g[a].emplace_back(b);
143-
g[b].emplace_back(a);
138+
g[a].push_back(b);
139+
g[b].push_back(a);
144140
}
145-
vector<bool> vis(n);
146-
function<int(int)> dfs = [&](int i) -> int {
141+
bool vis[n];
142+
memset(vis, 0, sizeof(vis));
143+
function<int(int)> dfs = [&](int i) {
144+
if (vis[i]) {
145+
return 0;
146+
}
147147
vis[i] = true;
148148
int cnt = 1;
149149
for (int j : g[i]) {
150-
if (!vis[j]) {
151-
cnt += dfs(j);
152-
}
150+
cnt += dfs(j);
153151
}
154152
return cnt;
155153
};
156154
long long ans = 0, s = 0;
157155
for (int i = 0; i < n; ++i) {
158-
if (!vis[i]) {
159-
long long t = dfs(i);
160-
ans += s * t;
161-
s += t;
162-
}
156+
int t = dfs(i);
157+
ans += s * t;
158+
s += t;
163159
}
164160
return ans;
165161
}
@@ -179,22 +175,21 @@ func countPairs(n int, edges [][]int) (ans int64) {
179175
vis := make([]bool, n)
180176
var dfs func(int) int
181177
dfs = func(i int) int {
178+
if vis[i] {
179+
return 0
180+
}
182181
vis[i] = true
183182
cnt := 1
184183
for _, j := range g[i] {
185-
if !vis[j] {
186-
cnt += dfs(j)
187-
}
184+
cnt += dfs(j)
188185
}
189186
return cnt
190187
}
191188
var s int64
192189
for i := 0; i < n; i++ {
193-
if !vis[i] {
194-
t := int64(dfs(i))
195-
ans += s * t
196-
s += t
197-
}
190+
t := int64(dfs(i))
191+
ans += s * t
192+
s += t
198193
}
199194
return
200195
}
@@ -204,30 +199,28 @@ func countPairs(n int, edges [][]int) (ans int64) {
204199

205200
```ts
206201
function countPairs(n: number, edges: number[][]): number {
207-
const g = Array.from({ length: n }, () => []);
202+
const g: number[][] = Array.from({ length: n }, () => []);
208203
for (const [a, b] of edges) {
209204
g[a].push(b);
210205
g[b].push(a);
211206
}
212-
const vis = new Array(n).fill(false);
213-
const dfs = (i: number) => {
207+
const vis: boolean[] = Array(n).fill(false);
208+
const dfs = (i: number): number => {
209+
if (vis[i]) {
210+
return 0;
211+
}
214212
vis[i] = true;
215213
let cnt = 1;
216214
for (const j of g[i]) {
217-
if (!vis[j]) {
218-
cnt += dfs(j);
219-
}
215+
cnt += dfs(j);
220216
}
221217
return cnt;
222218
};
223-
let ans = 0;
224-
let s = 0;
219+
let [ans, s] = [0, 0];
225220
for (let i = 0; i < n; ++i) {
226-
if (!vis[i]) {
227-
const t = dfs(i);
228-
ans += s * t;
229-
s += t;
230-
}
221+
const t = dfs(i);
222+
ans += s * t;
223+
s += t;
231224
}
232225
return ans;
233226
}

0 commit comments

Comments
 (0)