给定一个链表,删除链表的倒数第 个节点,并且返回链表的头结点。

示例:

给定一个链表: 1->2->3->4->5, 和 n = 2.

当删除了倒数第二个节点后,链表变为 1->2->3->5.

说明:

给定的 n 保证是有效的。

进阶:

你能尝试使用一趟扫描实现吗?

快慢针的思想。快针先移动N个步长,然后两个针一起移动,快针结束时,慢针指向倒数第N+1个节点。然后就是简单的删除节点操作了。这里需要注意删除的节点是第一个节点的特判。

这里由于使用了JAVA,对返回head突然有了新的疑惑,为什么操作fast和slow会影响到head的内容。这里需要认真学习一下。

代码如下:

 class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
if (head == null)
return null;
ListNode slow = head;
ListNode fast = head;
while (n >= 1 && fast.next != null) {
fast = fast.next;
n--;
}
if (n > 1)
return head;
if (n == 1)
return head.next;
while (fast.next != null) {
slow = slow.next;
fast = fast.next;
}
slow.next = slow.next.next;
return head;
}
}

最新文章

  1. RESTEasy-Rest服务框架
  2. 虚拟机NAT模式无法上网问题的解决办法
  3. JAVA的Proxy动态代理在自动化测试中的应用
  4. Android控件系列之CheckBox
  5. Schwarz导数与凹凸性
  6. ssh的相关实验
  7. 关于双11过后MATLAB许可过期问题的解决方案
  8. LAMP分离搭建WordPress
  9. CountDownLatch和CyclicBarrier模拟同时并发请求
  10. vuex那些事儿
  11. seq_file学习(2)—— seq_file
  12. React自己写的一个地图小组件
  13. python 模块之-re
  14. 如何自定义Tomcat Realm实现我们的用户认证需求
  15. Qt计算器开发(三):执行效果及项目总结
  16. docker(一)安装和必要的配置。
  17. 悟空模式-java-普通工厂模式
  18. 使用Xshell远程访问tensorboard
  19. DDD学习笔录——提炼问题域之知识提炼与协作的基本原则
  20. Atitit.软件仪表盘(4)--db数据库子系统-监測

热门文章

  1. 【阿里云IoT+YF3300】6.物联网设备报警配置
  2. Service Mesh 初体验
  3. redis之PubSub
  4. 基于Groovy搭建Ngrinder脚本调试环境
  5. Android_Fragment栈操作 commit()问题分析
  6. null与undefined的区别?
  7. 智学网电脑端查分小工具 已更新V2.2
  8. MIT线性代数:19.行列式和代数余子式
  9. 阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费
  10. ie浏览器兼容性的入门解决方案