160. 相交链表
Posted 潜行前行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了160. 相交链表相关的知识,希望对你有一定的参考价值。
- 相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。
图示两个链表在节点 c1 开始相交:
题目数据 保证 整个链式结构中不存在环。
注意,函数返回结果后,链表必须 保持其原始结构 。
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
int sumA = 0, sumB = 0;
ListNode tmpA = headA;
ListNode tmpB = headB;
while(tmpA != null){
sumA++;
tmpA = tmpA.next;
}
while(tmpB != null){
sumB++;
tmpB = tmpB.next;
}
tmpA = headA;
tmpB = headB;
while(sumA > sumB){
tmpA = tmpA.next;
sumA--;
}
while(sumB > sumA){
tmpB = tmpB.next;
sumB--;
}
for(int i=0;i<sumA;i++){
if(tmpA == tmpB){
return tmpA;
}
tmpA = tmpA.next;
tmpB = tmpB.next;
}
return null;
}
}
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode tmpA = headA ,tmpB = headB;
while(tmpA!=tmpB){
tmpA = tmpA == null ? headB : tmpA.next;
tmpB = tmpB == null ? headA : tmpB.next;
}
return tmpA;
}
}
以上是关于160. 相交链表的主要内容,如果未能解决你的问题,请参考以下文章
代码随想录算法训练营第四天 | 24.两两交换链表中的节点19.删除链表的倒数第N个节点160.相交链表142.环形链表II