在leetcode上的序号为160的一道题。题目不难,但是看到大佬的思路后,觉得很清奇,发个博客记录一下,供大家参考学习
毕竟算法思路很重要~
题目:
编写一个程序,找到两个单链表headA与headB相交的起始节点。
由于两个链表其实点距离相交处长度不一,因此需要通过某方法来抵消这种长度差:
附上伪代码:
curA = headA,curB = headB;
while curA != curB
if curA==null
curA指向headB
else
curA.next
//curB同样操作
//最后return curA/curB
最后附上代码:
public ListNode getIntersectionNode1(ListNode headA, ListNode headB) {
ListNode a = headA;
ListNode b = headB;
while(a != b) {
if(a == null)
a = headB;
else {
a = a.next;
}
if(b == null) {
b = headA;
}
else {
b = b.next;
}
}
return a;
}