当前位置:   article > 正文

删除链表的倒数第N个节点java实现_java 删除链表倒数第 n 个结点

java 删除链表倒数第 n 个结点

删除链表的倒数第N个节点

力扣

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

示例:

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

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

  1. /**
  2. * Definition for singly-linked list.
  3. * public class ListNode {
  4. * int val;
  5. * ListNode next;
  6. * ListNode(int x) { val = x; }
  7. * }
  8. */
  9. class Solution {
  10. public ListNode removeNthFromEnd(ListNode head, int n) {
  11. if(head==null||n==0){
  12. return null;
  13. }
  14. int i=0;
  15. ListNode f=head;
  16. ListNode s=head;
  17. ListNode p=head;
  18. //快节点先走n-1步
  19. while(f.next!=null&&i<n-1){
  20. f=f.next;
  21. i++;
  22. }
  23. //如果当前快节点到头了但是还没走到n-1步,说明链表长度不够,直接返回
  24. if(f.next==null&&i<n-1){
  25. return head;
  26. }
  27. //如果当前快节点到头了并且走到n-1步,说明删除链表头结点,返回head.next
  28. if(f.next==null&&i==n-1){
  29. return head.next;
  30. }
  31. //此时快慢同时出发,到快节点到头为止
  32. while(f.next!=null){
  33. f=f.next;
  34. //p记录s的前置节点
  35. p=s;
  36. s=s.next;
  37. }
  38. //删除s
  39. p.next=s.next;
  40. return head;
  41. }
  42. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/990742
推荐阅读
相关标签
  

闽ICP备14008679号