题目
160. 相交链表【简单】
题解
哈希表
感慨虽然刷题还没刷几天,但还是有用的,现在简单题基本能有思路了,前几天遇到哈希表,现在已经能自己做出来了,开心
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
Set<ListNode>hashSet=new HashSet<ListNode>();
while(headA!=null){
hashSet.add(headA);
headA=headA.next;
}
while(headB!=null){
if(hashSet.contains(headB))
return headB;
headB=headB.next;
}
return null;
}
}
时间复杂度:
O
(
m
+
n
)
O(m+n)
O(m+n) 空间复杂度:
O
(
n
)
O(n)
O(n)
双指针
和昨天的环形链表极其像啊
这里的图解写的特别好,看到高赞的一句话描述这个解法,“走到尽头见不到你,于是走过你来时的路,等到相遇时才发现,你也走过我来时的路”,超级形象
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
if(headA==null||headB==null)
return null;
ListNode pA=headA;
ListNode pB=headB;
while(pA!=pB){
pA = pA==null? headB:pA.next;
pB = pB==null? headA:pB.next;
}
return pA;
}
}
时间复杂度:
O
(
m
+
n
)
O(m+n)
O(m+n) 空间复杂度:
O
(
1
)
O(1)
O(1),优于哈希表
|