题目:leetcode 面试题 02.07. 链表相交
描述:
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。
图示两个链表在节点 c1 开始相交:
思路:
简单来说,就是求两个链表交点节点的指针。 这里要注意,交点不是数值相等,而是指针相等。
为了方便举例,假设节点元素数值相等,则节点指针相等。文章来源:https://www.toymoban.com/news/detail-641254.html
看如下两个链表,目前curA指向链表A的头结点,curB指向链表B的头结点:
文章来源地址https://www.toymoban.com/news/detail-641254.html
class ListNode {
public int val;
public ListNode next;
public ListNode(){};
public ListNode(int val){ this.val=val;}
public ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode curA=headA;
ListNode curB=headB;
int lenA=0,lenB=0;
while(curA!=null)
{
lenA++;
curA=curA.next;
}
while(curB!=null)
{
lenB++;
curB=curB.next;
}
curA=headA;
curB=headB;
int len=Math.abs(lenA-lenB);
if(lenA>=lenB)
{
for (int i = 0; i < len; i++)
curA=curA.next;
}
else {
for (int i = 0; i < len; i++)
curB=curB.next;
}
while(curA!=null)
{
if(curA==curB)
return curA;
curA=curA.next;
curB=curB.next;
}
return null;
}
}
到了这里,关于leetcode 面试题 02.07. 链表相交的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!