美文网首页程序员
力扣 19 删除链表的倒数第N个节点

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

作者: zhaojinhui | 来源:发表于2020-06-10 11:11 被阅读0次

题意:给一个链表,删除倒数第N个节点

思路:

  1. 给链表添加一个新的头节点,以便返回时,能方便取到原始头节点
  2. 取一个快指针指向新的头节点,把它向后移动N个节点
  3. 取一个慢指针指向新的头节点,把它和此时的快指针一起向后移动,每次均移动一格,直到快指针的下一个节点为空则停止
  4. 此时慢指针的下一个节点即为要移除的节点,可以让慢指针指向的节点,指向需要移除节点的下一个节点,并返回原始头节点

思想:快慢指针

复杂度:时间O(n),空间O(1)

class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode newhead = new ListNode(0);
        newhead.next = head;
        ListNode run1 = newhead;
        for(int i=0;i<n;i++)
            run1 = run1.next;
        ListNode run2 = newhead;
        while(run1.next != null) {
            run1 = run1.next;
            run2 = run2.next;
        }
        run2.next = run2.next.next;
        return newhead.next;
    }
}

相关文章

网友评论

    本文标题:力扣 19 删除链表的倒数第N个节点

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