《漫画算法2》源码整理-8 链表中倒数第K个节点元素

Posted GarfieldEr007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《漫画算法2》源码整理-8 链表中倒数第K个节点元素相关的知识,希望对你有一定的参考价值。

链表中倒数第K个节点元素

public class KthFromEnd 
    public static Node findKthFromEnd(Node head, int k)
        Node p1 = head;
        Node p2 = head;
        //把p2指针移动到正数第n个结点
        for(int i=1; i<k; i++)
            p2 = p2.next;
            if(p2 == null)
                throw new IllegalArgumentException("参数n超出链表长度!");
            
        
        //p1和p2一起右移,直到p2指向链表尾结点
        while (p2.next != null)
            p1 = p1.next;
            p2 = p2.next;
        
        return p1;
    

    //快速创建链表
    private static Node buildLinkList(int[] array)
        Node head = new Node(array[0]);
        Node p = head;
        for(int i=1; i<array.length; i++)
            p.next = new Node(array[i]);
            p = p.next;
        
        return head;
    

    //链表节点
    private static class Node 
        int data;
        Node next;

        Node(int data) 
            this.data = data;
        
    

    public static void main(String[] args) 
        int[] inputs = 5,3,7,2,4,1,9,8;
        Node head = buildLinkList(inputs);
        Node node = findKthFromEnd(head,3);
        System.out.println("链表倒数第3个元素是:" + node.data);
    


以上是关于《漫画算法2》源码整理-8 链表中倒数第K个节点元素的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode算法热题 --- 链表篇链表中倒数第k个节点

[算法]在单链表和双链表中删除倒数第k个结点

最强解析面试题:链表中倒数第 k 个节点「建议收藏!」

最强解析面试题:链表中倒数第 k 个节点「建议收藏!」

算法总结之 在单链表和双链表中删除倒数第k个节点

算法leetcode剑指 Offer 22. 链表中倒数第k个节点(多语言实现)