package com.interview.books.leetcodeoj;
import com.interview.leetcode.utils.ListNode;
/**
* Created_By: stefanie
* Date: 14-12-29
* Time: 下午10:37
*/
public class LOJ160_IntersectionOfTwoLinkedList {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
int lenA = length(headA);
int lenB = length(headB);
if(lenA == 0 || lenB == 0) return null;
if(lenA < lenB){ //keep headA as the longer one
ListNode temp = headA;
headA = headB;
headB = temp;
int lenTmp = lenA;
lenA = lenB;
lenB = lenTmp;
}
while(lenA > lenB && headA != headB) {
headA = headA.next;
lenA--;
}
if(headA == headB) return headA;
while(lenA > 0 && headA != headB){
headA = headA.next;
headB = headB.next;
lenA--;
lenB--;
}
return lenA > 0? headA : null;
}
public int length(ListNode head){
int length = 0;
while(head != null){
head = head.next;
length++;
}
return length;
}
}