题目要求:
输入两个链表,找出它们的第一个公共节点。
示例:
-------------------------------------------------------
思路+代码:
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
if(headA == null || headB == null){
return null;
}
//保存头节点
ListNode a = headA;
ListNode b = headB;
//两个指针遍历两个链表
while(a != b){
//遍历完自己就走对方的路
a = (a == null ? headB : a.next);
b = (b == null ? headA : b.next);
}
return a;
}
}
时间复杂度:O(m+n),其中 m 和 n是分别是链表 headA 和 headB的长度
空间复杂度:O(1)
【PS:优雅永不过时,浪漫至死不渝】
-------------------------------------------------------
待补充哈希解法