剑指Offer:链表中倒数第k个结点【22】

时间:2023-03-08 21:19:37

剑指Offer:链表中倒数第k个结点【22】

题目描述

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

解题思考

  我们定义两个指针L和R,R事先移动K-1个位置,然后两者同时往后移动直到遇到R的下个节点为空,此时L节点的位置就是倒数第K个节点。

  剑指Offer:链表中倒数第k个结点【22】

Java题解

package linklist;

public class FindKthToFail {

    public static ListNode FindKthToTail(ListNode head,int k) {

         if(head==null||k==0)
return null;
ListNode ptr = head;
for(int i=1;i<k;i++) {
if(head.next==null)
return null;
head = head.next;
}
while (head.next!=null)
{
ptr=ptr.next;
head=head.next;
} return ptr;
} public static void main(String[] args) {
ListNode n1 = new ListNode(1);
ListNode n2 = new ListNode(2);
ListNode n3 = new ListNode(3);
ListNode n4 = new ListNode(4);
ListNode n5 = new ListNode(5);
n1.next=n2;
n2.next=n3;
n3.next=n4;
n4.next=n5;
System.out.println(FindKthToTail(n1,2).val);
}
}