• 删除链表的倒数第n个节点


    问题描述

      leetcode 19. 删除链表的倒数第 n 个节点(倒数第1个节点表示顺数最后一个节点)

    解题思路

      可以将倒数问题,变出顺数问题来求解。先计算链表长度length,再转化为删除链表顺数第 length - n + 1 个元素

      O(n)复杂度解法:使用一次遍历即可成功

      我们可以先找到第 n 个节点 curNode,再设置一个 preNode 节点为被删除节点的前一个节点;

      从第 n 个节点开始,curNodepreNode 一起向后移动,直到 preNode 成为被删除节点的前一节点 。

     1 class Solution {
     2     public ListNode removeNthFromEnd(ListNode head, int n) {
     3         ListNode dummy = new ListNode(-1);
     4         dummy.next = head;
     5         ListNode curNode = dummy;
     6         ListNode preNode = dummy;
     7         int count = 0;
     8         while(count < n) {
     9             curNode = curNode.next;
    10             count ++;
    11         }
    12 
    13         while (curNode.next!=null) {
    14             preNode = preNode.next;
    15             curNode = curNode.next;
    16         }
    17 
    18         preNode.next = preNode.next.next;
    19         return dummy.next;
    20     }
    21 }
     
  • 相关阅读:
    stl_hash_set.h
    stl_hash_map.h
    stl_algobase.h
    stl_relops.h
    stl_algo.h
    VC6常用插件
    visual assist(VA)设置快捷键(其它安装的插件设置快捷键也在这里)
    SVN常用命令说明
    Android 调用相册 拍照 实现系统控件缩放 切割图片
    Android 一个3D相册源码
  • 原文地址:https://www.cnblogs.com/dogeLife/p/10952688.html
Copyright © 2020-2023  润新知