Leetcode---相交連結串列--兩種解法
阿新 • • 發佈:2018-12-05
相交連結串列
題目地址:相交連結串列
解法一
- 利用set集合儲存a連結串列的地址,再遍歷b連結串列每個節點,碰到相等的
就返回
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
//解法一:
if(headA==null||headB==null) {
return null;
}
Set<ListNode> nodes = new HashSet<ListNode>();
while(headA!=null) {
nodes. add(headA);
headA = headA .next;
}
while(headB!=null) {
if(nodes.contains(headB)) {
return headB;
}
headB = headB .next;
}
return null;
}
解法二
- 利用兩個指標分別指向a,b的頭,分別遍歷a,b中所有不重複的節點,那麼,兩個指標走的長度肯定是相等的
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
if(headA==null||headB==null) {
return null;
}
ListNode a = headA,b = headB;
while(a!=b) {
a = a==null?headB:a.next;
b = b==null?headA:b.next;
}
return a;
}