题意:
有一个长度为 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; } };
时间复杂度:空间复杂度: