链表中倒数第K个结点
链表中倒数第K个结点
问题:输入一个链表,输出该链表中倒数第k个结点。
思路:设置两个指针i,j,先让j走k-1步,之后两个指针一起走。当j走到链表的最后一个的时候,i指向的为倒数第k个结点
代码实现:
public static ListNode findKthToTail(ListNode head,int k){
if(head ==null)
return null;
if(k <=0)
return null;
ListNode i =head,
j = head;
int index = 1;
while ( index <k){
if(j.next ==null)
return null;
j = j.next;
index++;
}
while (j.next !=null){
i = i.next;
j = j.next;
}
return i;
}
测试函数:
public static void main(String[] args){
ListNode A =new ListNode(3);
ListNode B = new ListNode(12);
ListNode C = new ListNode(1);
ListNode D = new ListNode(10);
ListNode F = new ListNode(7);
A.next = B;
B.next = C;
C.next = D;
D.next = F;
System.out.println(findKthToTail(A,2).val);
}
查看16道真题和解析