class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if(pListHead == nullptr || k == 0) return nullptr;
ListNode* pFront = pListHead;
ListNode* pBehind = pListHead;
for(int i=1; i<k; i++) {
if(pFront->next != nullptr) {
pFront = pFront->next;
} else {
return nullptr;
}
}
while(pFront->next != nullptr) {
pFront = pFront->next;
pBehind = pBehind->next;
}
return pBehind;
}
};
题不难,关键在于特殊情况的处理。
第一次没过,把两个新指针的定义写成了这样,没通过编译:
ListNode* pFront = pListHead, pBehind = pListHead;
这样通过了:
ListNode * pFront = pListHead, * pBehind = pListHead;
说明ListNode 与 * 与 pFront都应该分开看。