Skip to content

Commit b8cc2ab

Browse files
committed
feat: update solutions to lc/lcof2 problems
lc No.0684 & lcof2 No.118.Redundant Connection
1 parent 57966ab commit b8cc2ab

File tree

11 files changed

+116
-134
lines changed

11 files changed

+116
-134
lines changed

lcof2/剑指 Offer II 118. 多余的边/README.md

Lines changed: 25 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,12 @@ d[find(a)] = distance
122122
```python
123123
class Solution:
124124
def findRedundantConnection(self, edges: List[List[int]]) -> List[int]:
125-
p = list(range(1010))
126-
127125
def find(x):
128126
if p[x] != x:
129127
p[x] = find(p[x])
130128
return p[x]
131129

130+
p = list(range(1010))
132131
for a, b in edges:
133132
if find(a) == find(b):
134133
return [a, b]
@@ -150,10 +149,11 @@ class Solution {
150149
p[i] = i;
151150
}
152151
for (int[] e : edges) {
153-
if (find(e[0]) == find(e[1])) {
152+
int a = e[0], b = e[1];
153+
if (find(a) == find(b)) {
154154
return e;
155155
}
156-
p[find(e[0])] = find(e[1]);
156+
p[find(a)] = find(b);
157157
}
158158
return null;
159159
}
@@ -174,28 +174,20 @@ class Solution {
174174
public:
175175
vector<int> p;
176176

177-
vector<int> findRedundantConnection(vector<vector<int>> &edges) {
177+
vector<int> findRedundantConnection(vector<vector<int>>& edges) {
178178
p.resize(1010);
179-
for (int i = 0; i < p.size(); ++i)
179+
for (int i = 0; i < p.size(); ++i) p[i] = i;
180+
for (auto& e : edges)
180181
{
181-
p[i] = i;
182-
}
183-
for (auto e : edges)
184-
{
185-
if (find(e[0]) == find(e[1]))
186-
{
187-
return e;
188-
}
189-
p[find(e[0])] = find(e[1]);
182+
int a = e[0], b = e[1];
183+
if (find(a) == find(b)) return e;
184+
p[find(a)] = find(b);
190185
}
191186
return {};
192187
}
193188

194189
int find(int x) {
195-
if (p[x] != x)
196-
{
197-
p[x] = find(p[x]);
198-
}
190+
if (p[x] != x) p[x] = find(p[x]);
199191
return p[x];
200192
}
201193
};
@@ -204,27 +196,26 @@ public:
204196
### **Go**
205197
206198
```go
207-
var p []int
208-
209199
func findRedundantConnection(edges [][]int) []int {
210-
p = make([]int, 1010)
211-
for i := 0; i < len(p); i++ {
200+
p := make([]int, 1010)
201+
for i := range p {
212202
p[i] = i
213203
}
214-
for _, e := range edges {
215-
if find(e[0]) == find(e[1]) {
216-
return e
204+
var find func(x int) int
205+
find = func(x int) int {
206+
if p[x] != x {
207+
p[x] = find(p[x])
217208
}
218-
p[find(e[0])] = find(e[1])
209+
return p[x]
219210
}
220-
return nil
221-
}
222-
223-
func find(x int) int {
224-
if p[x] != x {
225-
p[x] = find(p[x])
211+
for _, e := range edges {
212+
a, b := e[0], e[1]
213+
if find(a) == find(b) {
214+
return []int{a, b}
215+
}
216+
p[find(a)] = find(b)
226217
}
227-
return p[x]
218+
return []int{}
228219
}
229220
```
230221

lcof2/剑指 Offer II 118. 多余的边/Solution.cpp

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,20 @@ class Solution {
22
public:
33
vector<int> p;
44

5-
vector<int> findRedundantConnection(vector<vector<int>> &edges) {
5+
vector<int> findRedundantConnection(vector<vector<int>>& edges) {
66
p.resize(1010);
7-
for (int i = 0; i < p.size(); ++i)
7+
for (int i = 0; i < p.size(); ++i) p[i] = i;
8+
for (auto& e : edges)
89
{
9-
p[i] = i;
10-
}
11-
for (auto e : edges)
12-
{
13-
if (find(e[0]) == find(e[1]))
14-
{
15-
return e;
16-
}
17-
p[find(e[0])] = find(e[1]);
10+
int a = e[0], b = e[1];
11+
if (find(a) == find(b)) return e;
12+
p[find(a)] = find(b);
1813
}
1914
return {};
2015
}
2116

2217
int find(int x) {
23-
if (p[x] != x)
24-
{
25-
p[x] = find(p[x]);
26-
}
18+
if (p[x] != x) p[x] = find(p[x]);
2719
return p[x];
2820
}
2921
};
Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
1-
var p []int
2-
31
func findRedundantConnection(edges [][]int) []int {
4-
p = make([]int, 1010)
5-
for i := 0; i < len(p); i++ {
2+
p := make([]int, 1010)
3+
for i := range p {
64
p[i] = i
75
}
8-
for _, e := range edges {
9-
if find(e[0]) == find(e[1]) {
10-
return e
6+
var find func(x int) int
7+
find = func(x int) int {
8+
if p[x] != x {
9+
p[x] = find(p[x])
1110
}
12-
p[find(e[0])] = find(e[1])
11+
return p[x]
1312
}
14-
return nil
15-
}
16-
17-
func find(x int) int {
18-
if p[x] != x {
19-
p[x] = find(p[x])
13+
for _, e := range edges {
14+
a, b := e[0], e[1]
15+
if find(a) == find(b) {
16+
return []int{a, b}
17+
}
18+
p[find(a)] = find(b)
2019
}
21-
return p[x]
20+
return []int{}
2221
}

lcof2/剑指 Offer II 118. 多余的边/Solution.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ public int[] findRedundantConnection(int[][] edges) {
77
p[i] = i;
88
}
99
for (int[] e : edges) {
10-
if (find(e[0]) == find(e[1])) {
10+
int a = e[0], b = e[1];
11+
if (find(a) == find(b)) {
1112
return e;
1213
}
13-
p[find(e[0])] = find(e[1]);
14+
p[find(a)] = find(b);
1415
}
1516
return null;
1617
}

lcof2/剑指 Offer II 118. 多余的边/Solution.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
class Solution:
22
def findRedundantConnection(self, edges: List[List[int]]) -> List[int]:
3-
p = list(range(1010))
4-
53
def find(x):
64
if p[x] != x:
75
p[x] = find(p[x])
86
return p[x]
97

8+
p = list(range(1010))
109
for a, b in edges:
1110
if find(a) == find(b):
1211
return [a, b]

solution/0600-0699/0684.Redundant Connection/README.md

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -118,13 +118,12 @@ d[find(a)] = distance
118118
```python
119119
class Solution:
120120
def findRedundantConnection(self, edges: List[List[int]]) -> List[int]:
121-
p = list(range(1010))
122-
123121
def find(x):
124122
if p[x] != x:
125123
p[x] = find(p[x])
126124
return p[x]
127125

126+
p = list(range(1010))
128127
for a, b in edges:
129128
if find(a) == find(b):
130129
return [a, b]
@@ -146,10 +145,11 @@ class Solution {
146145
p[i] = i;
147146
}
148147
for (int[] e : edges) {
149-
if (find(e[0]) == find(e[1])) {
148+
int a = e[0], b = e[1];
149+
if (find(a) == find(b)) {
150150
return e;
151151
}
152-
p[find(e[0])] = find(e[1]);
152+
p[find(a)] = find(b);
153153
}
154154
return null;
155155
}
@@ -173,10 +173,11 @@ public:
173173
vector<int> findRedundantConnection(vector<vector<int>>& edges) {
174174
p.resize(1010);
175175
for (int i = 0; i < p.size(); ++i) p[i] = i;
176-
for (auto e : edges)
176+
for (auto& e : edges)
177177
{
178-
if (find(e[0]) == find(e[1])) return e;
179-
p[find(e[0])] = find(e[1]);
178+
int a = e[0], b = e[1];
179+
if (find(a) == find(b)) return e;
180+
p[find(a)] = find(b);
180181
}
181182
return {};
182183
}
@@ -191,27 +192,26 @@ public:
191192
### **Go**
192193
193194
```go
194-
var p []int
195-
196195
func findRedundantConnection(edges [][]int) []int {
197-
p = make([]int, 1010)
198-
for i := 0; i < len(p); i++ {
196+
p := make([]int, 1010)
197+
for i := range p {
199198
p[i] = i
200199
}
201-
for _, e := range edges {
202-
if find(e[0]) == find(e[1]) {
203-
return e
200+
var find func(x int) int
201+
find = func(x int) int {
202+
if p[x] != x {
203+
p[x] = find(p[x])
204204
}
205-
p[find(e[0])] = find(e[1])
205+
return p[x]
206206
}
207-
return nil
208-
}
209-
210-
func find(x int) int {
211-
if p[x] != x {
212-
p[x] = find(p[x])
207+
for _, e := range edges {
208+
a, b := e[0], e[1]
209+
if find(a) == find(b) {
210+
return []int{a, b}
211+
}
212+
p[find(a)] = find(b)
213213
}
214-
return p[x]
214+
return []int{}
215215
}
216216
```
217217

solution/0600-0699/0684.Redundant Connection/README_EN.md

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,12 @@ We have overhauled the problem description + test cases and specified clearly th
8787
```python
8888
class Solution:
8989
def findRedundantConnection(self, edges: List[List[int]]) -> List[int]:
90-
p = list(range(1010))
91-
9290
def find(x):
9391
if p[x] != x:
9492
p[x] = find(p[x])
9593
return p[x]
9694

95+
p = list(range(1010))
9796
for a, b in edges:
9897
if find(a) == find(b):
9998
return [a, b]
@@ -113,10 +112,11 @@ class Solution {
113112
p[i] = i;
114113
}
115114
for (int[] e : edges) {
116-
if (find(e[0]) == find(e[1])) {
115+
int a = e[0], b = e[1];
116+
if (find(a) == find(b)) {
117117
return e;
118118
}
119-
p[find(e[0])] = find(e[1]);
119+
p[find(a)] = find(b);
120120
}
121121
return null;
122122
}
@@ -140,10 +140,11 @@ public:
140140
vector<int> findRedundantConnection(vector<vector<int>>& edges) {
141141
p.resize(1010);
142142
for (int i = 0; i < p.size(); ++i) p[i] = i;
143-
for (auto e : edges)
143+
for (auto& e : edges)
144144
{
145-
if (find(e[0]) == find(e[1])) return e;
146-
p[find(e[0])] = find(e[1]);
145+
int a = e[0], b = e[1];
146+
if (find(a) == find(b)) return e;
147+
p[find(a)] = find(b);
147148
}
148149
return {};
149150
}
@@ -158,27 +159,26 @@ public:
158159
### **Go**
159160
160161
```go
161-
var p []int
162-
163162
func findRedundantConnection(edges [][]int) []int {
164-
p = make([]int, 1010)
165-
for i := 0; i < len(p); i++ {
163+
p := make([]int, 1010)
164+
for i := range p {
166165
p[i] = i
167166
}
168-
for _, e := range edges {
169-
if find(e[0]) == find(e[1]) {
170-
return e
167+
var find func(x int) int
168+
find = func(x int) int {
169+
if p[x] != x {
170+
p[x] = find(p[x])
171171
}
172-
p[find(e[0])] = find(e[1])
172+
return p[x]
173173
}
174-
return nil
175-
}
176-
177-
func find(x int) int {
178-
if p[x] != x {
179-
p[x] = find(p[x])
174+
for _, e := range edges {
175+
a, b := e[0], e[1]
176+
if find(a) == find(b) {
177+
return []int{a, b}
178+
}
179+
p[find(a)] = find(b)
180180
}
181-
return p[x]
181+
return []int{}
182182
}
183183
```
184184

solution/0600-0699/0684.Redundant Connection/Solution.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ class Solution {
55
vector<int> findRedundantConnection(vector<vector<int>>& edges) {
66
p.resize(1010);
77
for (int i = 0; i < p.size(); ++i) p[i] = i;
8-
for (auto e : edges)
8+
for (auto& e : edges)
99
{
10-
if (find(e[0]) == find(e[1])) return e;
11-
p[find(e[0])] = find(e[1]);
10+
int a = e[0], b = e[1];
11+
if (find(a) == find(b)) return e;
12+
p[find(a)] = find(b);
1213
}
1314
return {};
1415
}

0 commit comments

Comments
 (0)