剑指offer 14.链表中倒数第k个结点

Posted Cheng~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer 14.链表中倒数第k个结点相关的知识,希望对你有一定的参考价值。

14.链表中倒数第k个结点

题目

输入一个链表,输出该链表中倒数第k个结点。

思路

假设原链表有n个结点,倒数第k个结点就是n-k+1个结点,那么这里可以设置两个结点,一个结点先走k-1步,是第k个结点,然后两个结点一起走,第一个结点再走n-k步就到达末尾,此时第二个结点也走了n-k步,到达了n-k+1个结点,就是所求的值。 这里有几点需要注意,就是k的范围,若k<=0那么直接返回null,若链表为空那也返回null,若链表长度小于k一样返回null

代码

  public class ListNode {

    int val;
    ListNode next = null;

    ListNode(int val) {
      this.val = val;
    }
  }

  public ListNode FindKthToTail(ListNode head, int k) {
    if (head == null || k <= 0) {
      return null;
    }
    ListNode ans = head;
    for (int i = 0; i < k - 1; i++) {
      if (head.next != null) {
        head = head.next;
      } else {
        return null;
      }
    }
    while (head.next != null) {
      head = head.next;
      ans = ans.next;
    }
    return ans;
  }

以上是关于剑指offer 14.链表中倒数第k个结点的主要内容,如果未能解决你的问题,请参考以下文章

剑指Offer14链表中倒数第k个结点

剑指Offer 14. 链表中倒数第k个结点 (链表)

剑指Offer-14.链表中倒数第k个结点(C++/Java)

剑指offer---14---链表中倒数第k个结点

Java 剑指offer(22) 链表中倒数第k个结点

剑指offer:链表中倒数第k个结点