题意:删除链表中倒数第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;
}
};

 

最新文章

  1. DedeCMS flink_add Getshell漏洞 管理员CSRF漏洞
  2. Thymeleaf
  3. JS动态生成的元素,其对应的方法不响应(比如单击事件,鼠标移动事件等)
  4. Android入门(四)UI-创建自定义控件
  5. swift中第三方网络请求库Alamofire的安装与使用
  6. Python tab键自动补齐
  7. bootstrap-datepicker的使用
  8. "微信全球商业创新大赛-创意中国2015"国际MBA商业挑战赛开启
  9. POJ 3461 Oulipo(乌力波)
  10. JS Flex交互:html嵌套Flex(swf)
  11. css3动画属性中的transition属性
  12. odoo view field option, action flage 参数
  13. exp-00091 oracle错误的解决办法
  14. android studio 默认 .gitignore 文件模板
  15. NOI 2005维护数列
  16. IPv6原理、应用与实践
  17. C#创建ActiveX
  18. HanLP自然语言处理包介绍
  19. SqlServer 使用sys.dm_tran_locks处理死锁问题
  20. mysql 慢查询时间

热门文章

  1. Linux上临时路由、永久路由配置
  2. Tomcat 和 JVM 性能调优总结
  3. 【代码学习】PYTHON迭代器
  4. STM32 MDK C 常见易错点
  5. 2020牛客寒假算法基础集训营3 - G. 牛牛的Link Power II(线段树)
  6. HashMap遍历,取出key和value
  7. spring 参数校验
  8. POJ-2891 Strange Way to Express Integers(拓展中国剩余定理)
  9. cf--TV Subscriptions (Hard Version)
  10. CSS样式的引入&区别&权重&CSS层叠性&CSS样式的来源