0160. 相交链表
最后更新于
这有帮助吗?
这有帮助吗?
let data = new Set();
while (A !== null) {
data.add(A);
A = A.next;
}
while (B !== null) {
if (data.has(B)) return B;
B = B.next;
}
return null;a = headA
b = headB
while a,b指针不相等时 {
if a指针为空时
a指针重定位到链表 B的头结点
else
a指针向后移动一位
if b指针为空时
b指针重定位到链表 A的头结点
else
b指针向后移动一位
}
return avar getIntersectionNode = function (headA, headB) {
let a = headA,
b = headB;
while (a != b) {
a = a === null ? headB : a.next;
b = b === null ? headA : b.next;
}
return a;
};class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
a, b = headA, headB
while a != b:
a = a.next if a else headB
b = b.next if b else headA
return a/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func getIntersectionNode(headA, headB *ListNode) *ListNode {
// a=A(a单独部分)+C(a相交部分); b=B(b单独部分)+C(b相交部分)
// a+b=b+a=A+C+B+C=B+C+A+C
a := headA
b := headB
for a != b {
if a == nil {
a = headB
} else {
a = a.Next
}
if b == nil {
b = headA
} else {
b = b.Next
}
}
return a
}/**
* Definition for a singly-linked list.
* class ListNode {
* public $val = 0;
* public $next = null;
* function __construct($val) { $this->val = $val; }
* }
*/
class Solution
{
/**
* @param ListNode $headA
* @param ListNode $headB
* @return ListNode
*/
function getIntersectionNode($headA, $headB)
{
$a = $headA;
$b = $headB;
while ($a !== $b) { // 注意, 这里要用 !==
$a = $a ? $a->next : $headB;
$b = $b ? $b->next : $headA;
}
return $a;
}
}