题目描述
输入一个链表,输出该链表中倒数第k个结点。
注意:
k >= 0;
如果k大于链表长度,则返回 NULL;
样例描述
输入:链表:1->2->3->4->5 ,k=2
输出:4
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
思路
先遍历一遍求总长度,然后判断k是否大于总长度,然后在求正数第n-k个即可
代码
class Solution {
public:
ListNode* findKthToTail(ListNode* head, int k) {
int n=0;
auto p=head;
while(p){
p=p->next;
n++;
}
if(k>n) return NULL;
auto q=head;
for(int i=0;i<n-k;i++){
q=q->next;
}
return q;
}
};