剑指Offer 链表中倒数第k个结点
代码的完整性
两个指针,先让第一个指针和第二个指针都指向头结点,然后再让第一个指正走(k-1)步,到达第k个节点。然后两个指针同时往后移动,当第一个结点到达末尾的时候,第二个结点所在位置就是倒数第k个节点了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | class Solution { public : ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { ListNode* p1 = pListHead, *p2 = pListHead; for ( int i = 0; i < k-1; i++) { if (p1 == NULL) { cout << "k > len(List)" << endl; return NULL; } p1 = p1->next; } if (p1 == NULL) return NULL; while (p1->next != NULL) { p1 = p1->next; p2 = p2->next; } return p2; } }; |
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步