美文网首页
19. 删除链表的倒数第 N 个结点

19. 删除链表的倒数第 N 个结点

作者: 水中的蓝天 | 来源:发表于2022-07-19 12:55 被阅读0次

19. 删除链表的倒数第 N 个结点

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

示例.png

class Solution {

    /**
     快慢指针法:
     让快指针先走N步,然后慢指针才开始走
     直到快走完全程 此时慢指针的位置应该走到倒数第N个结点的前一个结点
     */
    public ListNode removeNthFromEnd(ListNode head, int n) {
       
       //0.处理边界问题
       if(head==null) return null;

       //1.定义需要的数据结构
       ListNode fast = head;
       ListNode slow = head;
       for(int i = 0;i < n;i++) {
            fast = fast.next;
       }
       
       //2.要移除的是首结点,可能情况有:链表有N个结点,删除倒数第N个
       if(fast==null) return head.next;

       //3.来到这里说明要删除的不是首结点,那就循环找到N的位置
       while(fast.next != null) {
           fast = fast.next;
           slow = slow.next;
       }

       //4.删除second的下一个结点
       slow.next = slow.next.next;

      return head;

    }
}

相关文章

网友评论

      本文标题:19. 删除链表的倒数第 N 个结点

      本文链接:https://www.haomeiwen.com/subject/hbotirtx.html