题目链接
链表相交
题目描述
注意点
- 题目数据保证整个链式结构中不存在环
- 函数返回结果后,链表必须保持其原始结构
- 设计一个时间复杂度 O(n) 、仅用 O(1) 内存的解决方案
解答思路
- 双指针分别指向headA和headB,当遍历完某个链表后,将指针指向另外一个链表,保证指针都遍历了链表A和链表B各一次,如果链表相交,则两个指针会在相交的起始位置相遇
代码
/**
* 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) {
if (headA == null || headB == null) {
return null;
}
ListNode pointer1 = headA;
ListNode pointer2 = headB;
while (pointer1 != pointer2) {
pointer1 = (pointer1 == null) ? headB : pointer1.next;
pointer2 = (pointer2 == null) ? headA : pointer2.next;
}
return pointer1;
}
}
关键点
- 无