/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode curA=headA;
ListNode curB=headB;
//我采用的是先对齐的方法。所以先计算两个链表的长度
int numA=0;
int numB=0;
curA=headA;
curB=headB;//这里要初始化。。。感觉前面那个算初始化啊淦还是不太熟练
while(curA!=null){
numA++;
curA=curA.next;
}
while(curB!=null){
numB++;
curB=curB.next;
}
curA=headA;
curB=headB;//这里要初始化。。。感觉前面那个算初始化啊淦还是不太熟练
/*经过我几番位置调试,我终于悟了,本来是初始化了的,刚刚为了算长度指针已经跑掉了,
所以得在这里重新初始化一下指向头*/
//因为不确定两个链表长短,为了方便进行一个转化。使A链表长一些
if(numB>numA){
int temp=numA;
numA=numB;
numB=temp;
ListNode tempcur=curA;
curA=curB;
curB=tempcur;
}
int gap=numA-numB;
while(gap-- >0){
curA=curA.next;//java.lang.NullPointerException
}
while(curA!=null){
if(curA==curB)return curA;
curA=curA.next;
curB=curB.next;
}
return null;
}
}
程序员面试金典02.07. 链表相交
最新推荐文章于 2024-08-14 17:48:57 发布