13
13
14
14
图示两个链表在节点 c1 开始相交:
15
15
16
- ![ ] ( https://code-thinking-1253855093.file.myqcloud.com/pics/20211219221657.png )
16
+ ![ ] ( https://code-thinking-1253855093.file.myqcloud.com/pics/20211219221657.png )
17
17
18
18
题目数据 保证 整个链式结构中不存在环。
19
19
20
- 注意,函数返回结果后,链表必须 保持其原始结构 。
20
+ 注意,函数返回结果后,链表必须 保持其原始结构 。
21
21
22
- 示例 1:
22
+ 示例 1:
23
23
24
- ![ ] ( https://code-thinking-1253855093.file.myqcloud.com/pics/20211219221723.png )
24
+ ![ ] ( https://code-thinking-1253855093.file.myqcloud.com/pics/20211219221723.png )
25
25
26
26
示例 2:
27
27
28
- ![ ] ( https://code-thinking-1253855093.file.myqcloud.com/pics/20211219221749.png )
28
+ ![ ] ( https://code-thinking-1253855093.file.myqcloud.com/pics/20211219221749.png )
29
29
30
- 示例 3:
30
+ 示例 3:
31
31
32
32
![ ] ( https://code-thinking-1253855093.file.myqcloud.com/pics/20211219221812.png ) ![ ] ( https://code-thinking-1253855093.file.myqcloud.com/pics/20211219221812.png )
33
33
@@ -100,7 +100,7 @@ public:
100
100
## 其他语言版本
101
101
102
102
103
- ### Java
103
+ ### Java
104
104
```Java
105
105
public class Solution {
106
106
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
@@ -144,11 +144,11 @@ public class Solution {
144
144
}
145
145
return null;
146
146
}
147
-
147
+
148
148
}
149
149
```
150
150
151
- ### Python
151
+ ### Python
152
152
``` python
153
153
154
154
class Solution :
@@ -162,15 +162,15 @@ class Solution:
162
162
"""
163
163
cur_a, cur_b = headA, headB # 用两个指针代替a和b
164
164
165
-
165
+
166
166
while cur_a != cur_b:
167
167
cur_a = cur_a.next if cur_a else headB # 如果a走完了,那么就切换到b走
168
168
cur_b = cur_b.next if cur_b else headA # 同理,b走完了就切换到a
169
-
169
+
170
170
return cur_a
171
171
```
172
172
173
- ### Go
173
+ ### Go
174
174
175
175
``` go
176
176
func getIntersectionNode (headA , headB *ListNode ) *ListNode {
@@ -208,7 +208,30 @@ func getIntersectionNode(headA, headB *ListNode) *ListNode {
208
208
}
209
209
```
210
210
211
- ### javaScript
211
+ 双指针
212
+
213
+ ``` go
214
+ func getIntersectionNode (headA , headB *ListNode ) *ListNode {
215
+ l1,l2 := headA, headB
216
+ for l1 != l2 {
217
+ if l1 != nil {
218
+ l1 = l1.Next
219
+ } else {
220
+ l1 = headB
221
+ }
222
+
223
+ if l2 != nil {
224
+ l2 = l2.Next
225
+ } else {
226
+ l2 = headA
227
+ }
228
+ }
229
+
230
+ return l1
231
+ }
232
+ ```
233
+
234
+ ### javaScript
212
235
213
236
``` js
214
237
var getListLen = function (head ) {
@@ -218,9 +241,9 @@ var getListLen = function(head) {
218
241
cur = cur .next ;
219
242
}
220
243
return len;
221
- }
244
+ }
222
245
var getIntersectionNode = function (headA , headB ) {
223
- let curA = headA,curB = headB,
246
+ let curA = headA,curB = headB,
224
247
lenA = getListLen (headA),
225
248
lenB = getListLen (headB);
226
249
if (lenA < lenB) {
0 commit comments