链表中倒数第k个节点

题目 - 链表中倒数第k个节点

面试题 02.02

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

难度:简单

分析

双指针法

  1. 先让快指针走 k 步
  2. 快慢指针同时走,每次走一步
  3. 当快指针到达链表尾端时,慢指针就指向当倒数第 k 个节点

代码

func getKthFromEnd(_ head: ListNode?, _ k: Int) -> ListNode? {
      var fast = head, slow = head
    var step = k
    while step > 0 {
        fast = fast!.next
        step -= 1
    }

    while fast != nil {
        fast = fast!.next
        slow = slow!.next
    }

    return slow
  }