这道题也不难,先遍历一遍获得链表长度,再遍历获得答案头节点,要判断链表长度与k的大小关系。
public ListNode getKthFromEnd(ListNode head, int k) {
int len = 0;
ListNode temp = head;
while(temp!=null) {
len++;
temp = temp.next;
}
int in_order_index = len - k;
if(in_order_index >= 0) {
temp = head;
for(int count = 0;count<in_order_index;count++) {
temp = temp.next;
}
}else {
temp = null;
}
return temp;
}
但是答案还是给出了更简洁的方法。
设置两个指针,在一次遍历中,两个指针间距为k-1个节点,这样等到先走的节点到了尾节点,后走的节点,正好落在了倒数第k个节点。这个方法只需要遍历一遍。
而且还要判断,输入链表头节点是否为空,和k的值是否为正整数,这两点都没有考虑到。