面试题 02.07. 链表相交
给你两个单链表的头节点?headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。
图示两个链表在节点 c1 开始相交:
题目数据?保证?整个链式
注意,函数返回结果后,链表必须?保持其原始结构?。
示例 1:
结构中不存在环。
输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Intersected at '8' 解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。 从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。 在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。
思路
链表A走完走链表B
链表B走完走链表A
题解
class Solution{
public ListNode getNodeTogether(ListNode headA,ListNode headB){
if(headA==null||headB==null){return null;}
ListNode A=headA;
ListNode B=headB;
while(A!=B){
if(A!=null){A=A.next;}
else{A=headB;}
if(B!=null){B=B.next;}
else{B=headA;}
}
return A;
}
}
添加备注
执行用时:1 ms, 在所有?Java?提交中击败了100.00%的用户
内存消耗:40.9 MB, 在所有?Java?提交中击败了84.59%的用户
通过测试用例:45?/?45
|