链表中倒数第k个结点
链表中倒数第k个结点_牛客网
https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?tpId=8&tqId=11002&rp=1&ru=/ta/cracking-the-coding-interview&qru=/ta/cracking-the-coding-interview/question-ranking
# -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def FindKthToTail(self, head, k): # write code here Node=[] while head!=None: Node.append(head) head=head.next if k>len(Node) or k<1: return return Node[-k]
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if(pListHead == NULL || k == 0)
return NULL;
ListNode* p=pListHead;//两个指针p、q分别从链表头往尾部跑
ListNode* q=pListHead;
int n=k-1;
while(n--){
if(p->next!=NULL)
p=p->next;
else return NULL;//p指针先跑,当p跑了k-1个节点时,q再跑;当p跑到末尾时,q为所求
}
while(p->next!=NULL){//即p和q之间相差k-1个节点
p=p->next;
q=q->next;
}
return q;
}
};
查看27道真题和解析