mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-07 15:45:40 +08:00
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:
@ -13,21 +13,21 @@
|
|||||||
|
|
||||||
图示两个链表在节点 c1 开始相交:
|
图示两个链表在节点 c1 开始相交:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
题目数据 保证 整个链式结构中不存在环。
|
题目数据 保证 整个链式结构中不存在环。
|
||||||
|
|
||||||
注意,函数返回结果后,链表必须 保持其原始结构 。
|
注意,函数返回结果后,链表必须 保持其原始结构 。
|
||||||
|
|
||||||
示例 1:
|
示例 1:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
示例 2:
|
示例 2:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
示例 3:
|
示例 3:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@ -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) {
|
||||||
|
Reference in New Issue
Block a user