Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2dc74b6

Browse files
feat: update solutions to lc problems: No.0612,2316 (#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)

AltStyle によって変換されたページ (->オリジナル) /