题目描述:
输入一个链表,输出该链表中倒数第k个结点。
思路:
k不能是0,但是k可以是size,先求出当前链表的长度,用链表长度减去k就是要走的步数。就可以求出倒数第k个结点。
代码实现:
public class LinkedListTest{
static class ListNode{
int val;
ListNode next;
public ListNode(int val) {
this.val=val;
}
}
public int size(ListNode head) {
int size=0;
ListNode cur=head;
while(cur!=null) {
size++;
cur=cur.next;
}
return size;
}
public ListNode FindKthToTail(ListNode head,int k) {
if(head==null) {
return null;
}
int size=size(head);
if(k<=0||k>size) {
//k是非法值
return null;
}
int steps=size-k;
ListNode cur=head;
for(int i=0;i<steps;i++) {
cur=cur.next;
}
return cur;
}
}