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

题目来源:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/、

大致题意:
给一个链表,返回它的倒数第 k 个节点

思路

快慢指针
  1. 初始时,快慢指针都指向头部
  2. 先让一个快指针先走 k 步
  3. 再让两个指针同步走,直至快指针走到尾部,此时慢指针的位置就是倒数第 k 个节点

代码:

public ListNode getKthFromEnd(ListNode head, int k) {
        ListNode fast = head;
        ListNode low = head;
        // 快指针先走
        while (fast != null && k > 0) {
            fast = fast.next;
            k--;
        }
        // 同步走
        while (fast != null){
            fast = fast.next;
            low = low.next;
        }
        return low;
    }

你可能感兴趣的:(双指针,链表,leetcode)