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

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

    两次循环

    思路:第一次循环找出链表的总长度,第二次循环将倒数第n个节点删除。

    在链表头结点前加一个空节点,可以简化操作,对于删除头结点的情况不用特殊处理。

    public ListNode removeNthFromEnd(ListNode head, int n) {
            int len=0;
            ListNode index = head;
            while(index != null) {
                len++;
                index = index.next;
            }
            ListNode first = new ListNode (0);
            first.next = head;
            index = first;
            for(int i = 0; i < len - n; index=index.next) {
            }
            index.next = index.next.next;
            return first.next;
        }
    

    一次循环

    思路:一次循环就要在循环中确定倒数n个节点的位置。设置两个指针p,q,两个指针直接距离为n,p在前,q在后。当q遍历到最后一个节点时,将p节点删除。

    代码

    public ListNode removeNthFromEnd(ListNode head, int n) {
            ListNode first = new ListNode ( 0 );
            first.next = head;
            ListNode p = first, q = first;
            for(int i = 0; i < n; i++) {
                q = q.next;
            }
            while(q.next != null) {
                p = p.next;
                q = q.next;
            }
            p.next = p.next.next;
            return first.next;
        }
    
  • 相关阅读:
    「系统集成方案」智慧工地
    「Django」学习之路,持续更改
    「Django」与mysql8连接的若干问题
    「Python」socket指南
    「Python」35个知识点
    「CSS」文本编排相关的CSS属性设置
    「CSS」css基础
    bWAPP----HTML Injection
    bWAPP----HTML Injection
    bWAPP----HTML Injection
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/12659160.html
Copyright © 2011-2022 走看看