zoukankan      html  css  js  c++  java
  • 19. 删除链表的倒数第N个节点

    题目描述

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

    示例:
    给定一个链表: 1->2->3->4->5, 和 n = 2.
    当删除了倒数第二个节点后,链表变为 1->2->3->5.

    说明:
    给定的 n 保证是有效的。

    解决思路

    双指针法解决,快指针先走n+1步,慢指针再走,当快指针走完时,删除慢指针后一个节点即可。
    注意考虑删除的是头结点的情况,用哑结点可以避免特殊处理!!!

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode() {}
     *     ListNode(int val) { this.val = val; }
     *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
     * }
     */
    class Solution {
        public ListNode removeNthFromEnd(ListNode head, int n) {
            ListNode dummyHead = new ListNode(0);
            dummyHead.next=head;
            ListNode fast=dummyHead,slow=dummyHead;
            while (n--!=0&&fast!=null) {
                fast=fast.next;
            }
    
            fast=fast.next;
            while (fast!=null) {
                fast=fast.next;
                slow=slow.next;
            }
            slow.next=slow.next.next;
            return dummyHead.next;
        }
    }
    
  • 相关阅读:
    Web框架本质及浅谈HTTP协议
    mysql
    jQuery
    Css
    html
    socket编程
    面向对象and类
    模块
    装饰器
    cef network-settings
  • 原文地址:https://www.cnblogs.com/hunter-w/p/13836068.html
Copyright © 2011-2022 走看看