Merge pull request #1457 from LIU-HONGYANG/hongyangliu.add-solution

refactor: add golang solution to Intersection of Two Linked Lists LCCI
This commit is contained in:
程序员Carl
2022-07-18 09:14:04 +08:00
committed by GitHub

View File

@ -13,21 +13,21 @@
图示两个链表在节点 c1 开始相交:
![](https://code-thinking-1253855093.file.myqcloud.com/pics/20211219221657.png)
![](https://code-thinking-1253855093.file.myqcloud.com/pics/20211219221657.png)
题目数据 保证 整个链式结构中不存在环。
注意,函数返回结果后,链表必须 保持其原始结构 。
注意,函数返回结果后,链表必须 保持其原始结构 。
示例 1
示例 1
![](https://code-thinking-1253855093.file.myqcloud.com/pics/20211219221723.png)
![](https://code-thinking-1253855093.file.myqcloud.com/pics/20211219221723.png)
示例 2
![](https://code-thinking-1253855093.file.myqcloud.com/pics/20211219221749.png)
![](https://code-thinking-1253855093.file.myqcloud.com/pics/20211219221749.png)
示例 3
示例 3
![](https://code-thinking-1253855093.file.myqcloud.com/pics/20211219221812.png)![](https://code-thinking-1253855093.file.myqcloud.com/pics/20211219221812.png)
@ -100,7 +100,7 @@ public:
## 其他语言版本
### Java
### Java
```Java
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
@ -144,11 +144,11 @@ public class Solution {
}
return null;
}
}
```
### Python
### Python
```python
class Solution:
@ -162,15 +162,15 @@ class Solution:
"""
cur_a, cur_b = headA, headB # 用两个指针代替a和b
while cur_a != cur_b:
cur_a = cur_a.next if cur_a else headB # 如果a走完了那么就切换到b走
cur_b = cur_b.next if cur_b else headA # 同理b走完了就切换到a
return cur_a
```
### Go
### Go
```go
func getIntersectionNode(headA, headB *ListNode) *ListNode {
@ -208,7 +208,30 @@ func getIntersectionNode(headA, headB *ListNode) *ListNode {
}
```
### javaScript
双指针
```go
func getIntersectionNode(headA, headB *ListNode) *ListNode {
l1,l2 := headA, headB
for l1 != l2 {
if l1 != nil {
l1 = l1.Next
} else {
l1 = headB
}
if l2 != nil {
l2 = l2.Next
} else {
l2 = headA
}
}
return l1
}
```
### javaScript
```js
var getListLen = function(head) {
@ -218,9 +241,9 @@ var getListLen = function(head) {
cur = cur.next;
}
return len;
}
}
var getIntersectionNode = function(headA, headB) {
let curA = headA,curB = headB,
let curA = headA,curB = headB,
lenA = getListLen(headA),
lenB = getListLen(headB);
if(lenA < lenB) {