160 相交链表
题目描述:
解题分析:
使用双指针
复杂度:
时间复杂度:O(a+b)
空间复杂度:O(1)
代码实现
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
//1.声明两个指针A,B指向headA和headB
ListNode A = headA, B = headB;
//2.让两个指针一直后移,A遍历完了headA,去遍历headB; B遍历完了headB去遍历headA
//循环终止条件是,A==B,即A和B的物理地址相同
while (A != B){
A = A==null ? headB : A.next;
B = B==null ? headA : B.next;
}
/*跳出循环有两种情况:
1.A和B没有相交点:此时A和B均到达了对方链表的末尾,返回A或者B均为null
2.A和B有相交点:此时A和B到达交点处,返回A或者B即为交点处的地址
*/
return A;
}