題目描述
輸入一個(gè)鏈表域携,輸出該鏈表中倒數(shù)第k個(gè)結(jié)點(diǎn)。
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;
}
根據(jù)大神的說法,還有一種解法
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++的引用傳遞)加上遞歸,這里不再贅述