
思路
- cura和curb指针遍历A、B链表
- 对齐cura和curb指针
- cura和curb同时遍历,若遇到cura和curb相等,则链表相交,返回该节点
graph TD
cura\curb --> 对齐cura和curb --> cura和curb同时遍历 --> cura等于curb --> 返回cura
代码
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode cura = headA;
ListNode curb = headB;
if(cura == null || curb == null) {
return null;
}
int lena = 0;
int lenb = 0;
while(cura != null) {
cura = cura.next;
lena++;
}
while(curb != null) {
curb = curb.next;
lenb++;
}
cura = headA;
curb = headB;
int delta = Math.abs(lena-lenb);
if(lena > lenb){
while(delta > 0){
cura = cura.next;
delta--;
}
}else if(lena < lenb){
while(delta > 0){
curb = curb.next;
delta--;
}
}
while(cura != null) {
if(cura == curb) {
return cura;
}
cura = cura.next;
curb = curb.next;
}
return null;
}
}