leetcode-day19-返回倒数第 k 个节点[面试题 02.02]

image.png

双指针法

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @param {number} k
 * @return {number}
 */
var kthToLast = function(head, k) {
    if(head === null) return null;
    let first = head, second = head;
    let node = head;
    while(k > 0){
        first = first.next;
        k--;
    }
    console.log(first);
    while(first){
        second = second.next;
        first = first.next;
    }
    return second.val;
};

堆栈法

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @param {number} k
 * @return {number}
 */
var kthToLast = function(head, k) {
    if(head === null) return null;
    let arr = [];
    let node = head;
    while(node && (node.val || node.val === 0)){
         arr.push(node.val);
         node = node.next;
    }
    return arr[arr.length - k];
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。