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


    package leecode;


    /**
    * 19. 删除链表的倒数第 N 个结点
    *
    * 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
    *
    * 进阶:你能尝试使用一趟扫描实现吗?
    *
    *
    * @author Tang
    * @date 2021/9/22
    */
    public class RemoveNthFromEnd {

    /**
    * 双指针
    * index1用来找到正数第n个元素
    * 然后启动index0 index1同时向后遍历到头
    * 此时index0就是倒数第n个元素
    * (在head元素前再加一个首元素付给index0 用来删除操作)
    *
    * @param head
    * @param n
    * @return
    */
    public ListNode removeNthFromEnd(ListNode head, int n) {
    if(head == null) {
    return null;
    }
    ListNode first = new ListNode();
    first.next = head;

    ListNode index0 = first;
    ListNode index1 = head;

    int num = 1;
    while(index1.next != null) {
    if(num < n) {
    index1 = index1.next;
    num++;
    continue;
    }
    index0 = index0.next;
    index1 = index1.next;

    }
    index0.next = index0.next.next;
    return first.next;
    }


    public static void main(String[] args) {

    }


    }


    class ListNode {
    int val;
    ListNode next;
    ListNode() {}
    ListNode(int val) { this.val = val; }
    ListNode(int val, ListNode next) { this.val = val; this.next = next; }
    }
  • 相关阅读:
    c# Java 静态方法 并发问题
    最效率分页查询
    Hibernate中对象的三种状态
    Spring框架概述
    扫盲Cookies简单理解——关于IE浏览器隐私设置
    实例分析Struts的由来和概述
    操作系统——存储
    Hibernate概述
    操作系统——进程部分
    操作系统——进程死锁
  • 原文地址:https://www.cnblogs.com/ttaall/p/15319140.html
Copyright © 2020-2023  润新知