链表中倒数第K个结点

Posted *平芜尽处是春山*

tags:

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

解法一、顺序查找

class Solution 
    public ListNode getKthFromEnd(ListNode head, int k) 
        int n = 0;
        ListNode node = null;
        for(node = head;node != null;node = node.next) 
            n++;
        
        for(node = head;n > k;n--) 
            node = node.next;
        
        return node;
    

运行截图:

解法二、快慢指针法

class Solution 
    public ListNode getKthFromEnd(ListNode head, int k) 
       if(head == null || k == 0) 
           return null;
       
           ListNode low = head,fast = head;
           for(int i = 0;i < k;i++) 
               if(fast == null) 
                   return null;
               
               fast = fast.next;
           
           while(fast != null) 
               low = low.next;
               fast = fast.next;
           
           return low;
       

运行截图:

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

链表中倒数第k个结点

链表中倒数第K个结点

链表的倒数第k个节点

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

牛客网高频算法题系列-BM8-链表中倒数最后k个结点

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