19. 删除链表的倒数第 N 个结点
给你一个链表,删除链表的倒数第 n
个结点,并且返回链表的头结点。
==============================================================
使用双指针,时间复杂度O(n),空间复杂度O(1)
class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode* start = head; ListNode* end = head; while (n > 0&&end->next) { end = end->next; n--; } while (end->next) { start = start->next; end = end->next; } if (start->next&&n==0) { ListNode* d = start->next; start->next = d->next; delete d; return head; } if (n > 0) { head = start->next; delete start; return head; } return NULL; } };
标签:
双指针
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理