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 开始相交: 图示两个链表在节点 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 示例 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) ![](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 ```Java
public class Solution { public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) { public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
@ -144,11 +144,11 @@ public class Solution {
} }
return null; return null;
} }
} }
``` ```
### Python ### Python
```python ```python
class Solution: class Solution:
@ -162,15 +162,15 @@ class Solution:
""" """
cur_a, cur_b = headA, headB # 用两个指针代替a和b cur_a, cur_b = headA, headB # 用两个指针代替a和b
while cur_a != cur_b: while cur_a != cur_b:
cur_a = cur_a.next if cur_a else headB # 如果a走完了那么就切换到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 cur_b = cur_b.next if cur_b else headA # 同理b走完了就切换到a
return cur_a return cur_a
``` ```
### Go ### Go
```go ```go
func getIntersectionNode(headA, headB *ListNode) *ListNode { 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 ```js
var getListLen = function(head) { var getListLen = function(head) {
@ -218,9 +241,9 @@ var getListLen = function(head) {
cur = cur.next; cur = cur.next;
} }
return len; return len;
} }
var getIntersectionNode = function(headA, headB) { var getIntersectionNode = function(headA, headB) {
let curA = headA,curB = headB, let curA = headA,curB = headB,
lenA = getListLen(headA), lenA = getListLen(headA),
lenB = getListLen(headB); lenB = getListLen(headB);
if(lenA < lenB) { if(lenA < lenB) {