https://leetcode-cn.com/problems/kth-node-from-end-of-list-lcci/
題目詳解:
方法一: 遍歷整個鏈表 找到鏈表的長度 然后重新遍歷鏈表 找到length-k+1個元素 就是索要回傳的值
class Solution {
public:
int kthToLast(ListNode* head, int k) {
int length = 0;
ListNode* phead = head;
//遍歷鏈表的長度
while (phead->next != NULL) {
length++;
phead = phead->next;
}
phead = head;
for (int i = 0; i <=length - k; i++)
{
phead = phead->next;
}
return phead->val;
}
};
方法二:快慢指標法:雙指標法
初始化兩個指標p和q,讓其指向頭節點,p先移動k次,這樣p和q之間的距離相差k,然后p和q一起移動,直到p指向了null
代碼:
ListNode* phead = head;
ListNode* qhead = head;
//遍歷鏈表的長度
while (k--) {
phead = phead->next;
}
while (phead!= NULL) {
phead = phead->next;
qhead = qhead->next;
}
return qhead->val;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/160293.html
標籤:C++ 語言
下一篇:并發編程
