题意:
有一个长度为 n 的链表,输出该链表的后 k 个节点。
如果该链表长度小于k,请返回一个长度为 0 的链表。
方法:
思维
思路:求一个链表的后k个节点。可以先求链表的总长度,用总长度减去k,就可以得到从前往后遍历的步长。
class Solution {
public:
ListNode* FindKthToTail(ListNode* pHead, int k) {
ListNode *p=pHead;//初始化
int n=0;//链表长度
while(p){//遍历链表,统计长度
n++;
p=p->next;
}
//计算从前往后遍历的步长
int num=n-k;
if(num<0)
return nullptr;
p=pHead;
while(num--){
p=p->next;
}
return p;
}
};
时间复杂度:
空间复杂度:![]()



京公网安备 11010502036488号