【LeetCode 19】删除链表的倒数第N个节点
2024-09-06 05:44:47
【题解】
经典的一道题。
让p1指向链表的第一个元素。
让p2指向链表的第二个元素。
然后让他们俩同时往后移动。
直到p2到达链表的尾巴。
这时p1和p2之间总是隔了n-1个元素。
所以p1一定是倒数第n个元素。
记得加个虚拟的头结点方便删除操作(删掉了第一个数字的话)
$O(N)$
【代码】
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode * temp = new ListNode(0);temp->next = head;
ListNode * ans = temp;
ListNode *p1 = head;
ListNode *p2 = head;
for (int i = 1;i <= n-1;i++) p2 = p2->next;
while (p2->next){
temp = temp->next;
p1 = p1->next;
p2 = p2->next;
}
temp->next = p1->next;
delete(p1);
return ans->next;
}
};
最新文章
- PHP HTTP请求
- struts2+spring+hibernte整合示例
- oracle游标调试结果显示位置
- css中visiblity和display异同
- block做方法参数时--block的参数传值过程 例1
- Cursor的各种效果
- 昂贵的聘礼---poj1062(最短路)
- [转载]Spring Java Based Configuration
- 实用Yii扩展
- adb shell dumpsys package 查看versionCode
- Android中的webview的进度条
- Android零碎知识点总结
- Android之事件分发
- CSS公用
- UWP 手绘视频创作工具技术分享系列 - 有 AI 的手绘视频
- bootstrap 栅格系统 HTTP协议 软件架构 B/S C/S 常见的WEB服务器
- Go 语言循环语句
- 基于.Net进行前端开发的技术栈发展路线(三)
- C#中的session用法
- Ocelot简易教程(二)之快速开始1