今天给大家带来一道关于链表的题目:
题目描述:
输入一个链表,输出该链表中倒数第k个结点。
如果该链表长度小于k,请返回空。
上代码:
ListNode* FindKthToTail(ListNode* pHead, int k) {
if(pHead == nullptr) return nullptr;
ListNode* right = pHead;
ListNode* left = pHead;
for(int i = 0; i < k ; i++){
if(right == nullptr){
return nullptr;
}
right = right->next;
}
while(right != nullptr){
right = right->next;
left = left->next;
}
return left;
}
};
这里采用的是双指针,由于单链表的单向性,我们无法先通过先找到尾节点,再来向左走k - 1步来得到倒数第k个节点,所以我们利用间隔为k个节点的一左一右双指针,当右指针跑到末尾的时候,左指针就是倒数第k个啦,代码很简单,接下来就是提交啦!
通过啦!有什么问题评论区评论或私聊我哦