1,解题思路一
遍历一遍链表求出链表的元素个数,再将链表元素个数减去k就得出正数的数,在遍历到正数的地方即可.
2.代码实现一
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) { if(pListHead==NULL) return NULL; int sum=0; struct ListNode* p=pListHead; while(p) { p=p->next; sum++; } if(k>sum) return NULL; int ret=sum-k; struct ListNode* ps=pListHead; for(int i=0;i<ret;i++) { ps=ps->next; } return ps; }
3.解题思路二
利用快慢指针,先让快指针走K步,然后再让快慢指针同时走,当快指针走到空时,此时慢指针指向的就为所要求的指针.
4.代码实现二
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k) { struct ListNode*slow=pListHead; struct ListNode*fast=pListHead; while(k--) { if(fast==NULL) return NULL; fast=fast->next; } while(fast) { fast=fast->next; slow=slow->next; } return slow; }
结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!