剑指offer_链表中倒数第k个节点

78 阅读1分钟

输入一个链表,输出该链表中倒数第 k 个结点。 1 求链表的长度 2 从起点走n-k步

注意:

k >= 1; 如果 k 大于链表长度,则返回 NULL;

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} pListHead
 * @param {number} k
 * @return {ListNode}
 */
var findKthToTail = function(pListHead, k) {
    //首先求链表的长度
    let cur = pListHead;
    let n = 0;
    while(cur){
        n++;
        cur = cur.next;
    }
    
    //倒数第k个  第一个节点 走 n - k 步
    cur = pListHead;
    if(k > n) return null;
    for(let i = 0; i < n - k; i ++){
        cur = cur.next;
    }
    return cur;
};