6/11, LinkedList 杂题
6/11, LinkedList 杂题
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
int lenA = 0;
int lenB = 0;
ListNode ptrA = headA;
ListNode ptrB = headB;
while(ptrA != null){
ptrA = ptrA.next;
lenA ++;
}
while(ptrB != null){
ptrB = ptrB.next;
lenB ++;
}
ptrA = headA;
ptrB = headB;
if(lenA > lenB){
for(int i = 0; i < lenA - lenB; i++){
ptrA = ptrA.next;
}
} else {
for(int i = 0; i < lenB - lenA; i++){
ptrB = ptrB.next;
}
}
while(ptrA != ptrB){
ptrA = ptrA.next;
ptrB = ptrB.next;
}
return ptrA;
}
}用都指向 head 的快慢指针可以判断链表长度奇偶,最后 fast == null 的时候为偶,slow 指向后半单第一个节点;fast.next == null 的时候链表长度为奇数,slow 指向中间节点。
拼接链表,认准多个 dummy node.
Last updated