题目描述
输入一个链表,输出该链表中倒数第k个结点。
public ListNode FindKthToTail(ListNode head,int k) {
ListNode copy=head;
int counter=0;
while(copy != null){
counter++;
copy=copy.next;
}
int findK=counter-k+1;
int counter1=0;
while(head != null){
counter1++;
if(counter1 == findK){
return head;
}else{
head=head.next;
}
}
return null;
}
根据大神的说法,还有一种解法
https://www.nowcoder.com/questionTerminal/529d3ae5a407492994ad2a246518148a
代码如下:
public ListNode FindKthToTail(ListNode head,int k) {
ListNode linked1=head;
ListNode linked2=head;
for(int i=0;i<k;i++){
linked1=linked1.next;
}
while(linked1 != null){
linked1=linked1.next;
linked2=linked2.next;
}
return linked2;
}
还有一种方法是包裹类(也就是c++的引用传递)加上递归,这里不再赘述