1. 程式人生 > >Leetcode---相交連結串列--兩種解法

Leetcode---相交連結串列--兩種解法

相交連結串列

題目地址:相交連結串列
解法一

  • 利用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; }