当前位置:   article > 正文

链表 19.删除链表的倒数第N个节点 双指针

链表 19.删除链表的倒数第N个节点 双指针

双指针

fast走n+1步,是为了和slow保持n+1个位置,此时fast移动至空节点,slow与fast位置差n+1节点,

那slow再往后移动一位,就是需要删除的倒数第n个节点,即目标节点。倒数第几个,翻过来看即正数第几个。

return head  和return dummy.next 的区别,若删除的是头节点,则头节点还需要更新,题目中给的头节点就不能用了。而dummy作为虚拟头节点,永远是头节点的上一位,即使head发生变化,仍然是dummy.next

  1. class Solution {
  2. public ListNode removeNthFromEnd(ListNode head, int n) {
  3. ListNode dummy = new ListNode();
  4. dummy.next = head;
  5. ListNode fast = dummy;
  6. ListNode slow = dummy;
  7. for(int i = 0; i <= n; i++){
  8. fast = fast.next;
  9. }
  10. while(fast != null){
  11. fast = fast.next;
  12. slow = slow.next;
  13. }
  14. if(slow.next != null){
  15. slow.next = slow.next.next;
  16. }
  17. return dummy.next;
  18. }
  19. }

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

闽ICP备14008679号