LeetCode 19. Remove Nth Node From End of List(删除链表中倒数第N个节点)
2024-10-08 15:06:13
题意:删除链表中倒数第N个节点。
法一:递归。每次统计当前链表长度,如果等于N,则return head -> next,即删除倒数第N个节点;否则的话,问题转化为子问题“对head->next这个链表删除倒数第N个节点”,将head的next指针指向该子问题的结果,返回head即可。这个方法时间复杂度高,不推荐。
/**
* 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) {
if(head == NULL) return NULL;
int cnt = 0;
ListNode *tmp = head;
while(tmp){
++cnt;
tmp = tmp -> next;
}
if(cnt == n){
return head -> next;
}
head -> next = removeNthFromEnd(head -> next, n);
return head;
}
};
法二:快慢指针,快指针先比慢指针多走N步,然后两者同时走,这样的话,当快指针的next指向NULL时,说明慢指针的next指向要被删除的节点。
注意:fast先走n步后,如果为NULL,表示链表长为n,则直接删除头结点,返回head->next即可。
/**
* 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* fast = head;
ListNode* slow = head;
while(n--){
fast = fast -> next;
}
if(fast == NULL) return head -> next;
while(fast -> next){
fast = fast -> next;
slow = slow -> next;
}
slow -> next = slow -> next -> next;
return head;
}
};
最新文章
- DedeCMS flink_add Getshell漏洞 管理员CSRF漏洞
- Thymeleaf
- JS动态生成的元素,其对应的方法不响应(比如单击事件,鼠标移动事件等)
- Android入门(四)UI-创建自定义控件
- swift中第三方网络请求库Alamofire的安装与使用
- Python tab键自动补齐
- bootstrap-datepicker的使用
- ";微信全球商业创新大赛-创意中国2015";国际MBA商业挑战赛开启
- POJ 3461 Oulipo(乌力波)
- JS Flex交互:html嵌套Flex(swf)
- css3动画属性中的transition属性
- odoo view field option, action flage 参数
- exp-00091 oracle错误的解决办法
- android studio 默认 .gitignore 文件模板
- NOI 2005维护数列
- IPv6原理、应用与实践
- C#创建ActiveX
- HanLP自然语言处理包介绍
- SqlServer 使用sys.dm_tran_locks处理死锁问题
- mysql 慢查询时间
热门文章
- Linux上临时路由、永久路由配置
- Tomcat 和 JVM 性能调优总结
- 【代码学习】PYTHON迭代器
- STM32 MDK C 常见易错点
- 2020牛客寒假算法基础集训营3 - G. 牛牛的Link Power II(线段树)
- HashMap遍历,取出key和value
- spring 参数校验
- POJ-2891 Strange Way to Express Integers(拓展中国剩余定理)
- cf--TV Subscriptions (Hard Version)
- CSS样式的引入&;区别&;权重&;CSS层叠性&;CSS样式的来源