链表 获取链表的倒数第k个元素

思路1:暴力 ,先暴力一次链表,记录链表的长度n,第二次遍历n-k+1个元素,返回,一共需要2n+1-k个

思路2:两个指针,左右指针相差k-1个距离,有指针到达链表末尾时,做指针指向倒数第k个元素.

思路3;

public static Node getFindNFromEndToList(Node head,int k){
        Node fisrt=head;
        Node second=head;
        int i=0;
        while (i<k){
            fisrt=fisrt.next;
            i++;
        }
        while(fisrt!=null){
            fisrt=fisrt.next;
            second=second.next;
        }
        return second;
    }
    public static void main(String[] args) {
        Node node1=new Node(1);
        Node node2=new Node(2);
        Node node3=new Node(3);
        Node node4=new Node(4);
        Node node5=new Node(5);
        Node node6=new Node(6);
        node1.next=node2;
        node2.next=node3;
        node3.next=node4;
        node4.next=node5;
        node5.next=node6;

        Node findNFromEndToList = getFindNFromEndToList(node1, 2);
        System.out.println(findNFromEndToList.getData());

    }

猜你喜欢

转载自blog.csdn.net/u011243684/article/details/87882393