public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
		if (headA == null || headB == null) {
			return null;
		}
		int aLen = getLen(headA);
		int bLen = getLen(headB);

		int diff = aLen - bLen;
		if (diff >= 0) {
			while (diff > 0) {
				headA = headA.next;
				diff--;
			}
		} else {
			diff = -diff;
			while (diff > 0) {
				headB = headB.next;
				diff--;
			}
		}
		while (headA != null && headB != null) {
			if (headA == headB) {
				return headA;
			}
			headA = headA.next;
			headB = headB.next;
		}
		return null;
	}