题目描述
如果该链表长度小于k,请返回一个长度为 0 的链表。
数据范围:0≤n≤10^5,0≤ai≤10^9,0≤k≤10^9
要求:空间复杂度 O(n),时间复杂度 O(n)
进阶:空间复杂度 O(1),时间复杂度 O(n)
示例1:
输入:{1,2,3,4,5},2 输出:{4,5}
示例2:
输入:{2},8 输出:{}
题解:
方法一:
function FindKthToTail( pHead , k ) {
var cur = pHead;
var length = 0;
while(cur) {
length++;
cur = cur.next;
}
if (length <k) return null;
cur = pHead;
for (var i =0; i < length-k; i++) {
cur = cur.next;
}
return cur;
}
方法二:
快指针快走k步,快指针为空时,满指针指向倒数第k个节点
function FindKthToTail( pHead , k ) {
let fast = pHead, slow = pHead;
for(var i = 0; i < k; i++) {
if(fast == null) return null;
fast = fast.next;
}
while(fast){
fast = fast.next;
slow = slow.next;
}
return slow;
}