1.题目
题目不明确,具体意思就是找到两个链表相交的节点,之后返回以相交节点为头节点的链表
2.解题思路(双指针)
两个相交链表,链表1长度+链表2头节点到相交节点的长度=链表1头节点到相交节点的长度+链表2长度
不相交链表,链表1长度+链表2长度=链表2长度+链表1长度
3.代码实现
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode temp1 = headA;
ListNode temp2 = headB;
int count1 = 0,count2 = 0;
if(temp1 == null || temp2 == null)
return null;
while(temp1 != null) {
count1++;
temp1 = temp1.next;
}
while(temp2 != null) {
count2++;
temp2 = temp2.next;
}
temp1 = headA;
temp2 = headB;
for(int i = 0; i < count1 + count2; i++) {
if(temp1 == null)
temp1 = headB;
if(temp2 == null)
temp2 = headA;
if(temp1 == temp2) {
break;
}
temp1 = temp1.next;
temp2 = temp2.next;
}
return temp1;
}
}
4.拼接思路
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode ha = headA, hb = headB;
while (ha != hb) {
ha = ha != null ? ha.next : headB;
hb = hb != null ? hb.next : headA;
}
return ha;
}
}
作者:jyd
链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/solution/intersection-of-two-linked-lists-shuang-zhi-zhen-l/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。