题目描述:
输入一个链表,反转链表后,输出新链表的表头。
题目分析:
两个指针,先让第一个指针和第二个指针都指向头结点,然后再让第一个指正走(k-1)步,到达第k个节点。然后两个指针同时往后移动,当第一个结点到达末尾的时候,第二个结点所在位置就是倒数第k个节点了。。
代码:
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function FindKthToTail(head, k) {
if (head == null || k <= 0) {
return null;
}
let pAhead = head;
let pBehind = head;
for (var i = 1; i < k; ++i) {
if (pAhead.next != null) {
pAhead = pAhead.next;
} else {
return null;
}
}
while(pAhead.next != null){
pAhead = pAhead.next;
pBehind = pBehind.next;
}
return pBehind;
}