leetcode-剑指 Offer 22. 链表中倒数第k个节点

128 阅读1分钟

image.png leetcode原题

解题思路

  • 定义 next 指针初始化指向 head
  • 然后让 next 指针向后走 k 步,此时 next 和头节点 head 拉开 k-1 的距离
  • 然后让 head 指针和 next 指针一起向后走,直到 next 指向 null
  • 此时 head 指针指向的就是倒数第 k 个节点
var getKthFromEnd = function(head, k) {
  let next = head;
  // next指针向后走k步
  while(k){
    next = next.next;
    k--;
  }
  // head next 指针一起向后走直到next走到链表末尾
  // 此时head指向倒数第k个节点
  while(next){
    head = head.next;
    next = next.next;
  }
  return head;
};