zoukankan      html  css  js  c++  java
  • 删除链表中的倒数第n个元素

      

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

    示例:

    给定一个链表: 1->2->3->4->5, 和 n = 2.

    当删除了倒数第二个节点后,链表变为 1->2->3->5.
    说明:

    给定的 n 保证是有效的。

      

    static ListNode removeNthFromEnd(ListNode head,int n){
            ListNode dummy=new ListNode(0);
            dummy.next=head;
            ListNode first=dummy;
            ListNode second=dummy;
            for(int i=0;i<=n;i++){
                first=first.next;
            }
            while (first!=null){
                first=first.next;
                second=second.next;
            }
            second.next=second.next.next;
            return dummy.next;
        }
    View Code

    思路:

      1.首先设置一个哑节点,哑节点的下一个节点就是原链表的第一个节点。

      2.第一个节点先走n+1步,走到原链表的第n个节点(由于前面加了个哑节点所有要走n+1步)。

      3.当第一个节点先走n+1步时,第二个节点开始走,此时2个间隔为n。

      4.当第一个节点走到为null时,第二个节点走到了倒数第n个节点的前一个节点。

      5.把第n个节点的前一个节点的下一个节点改为第n个节点的前一个节点的下一个节点的下一个节点。

      6.返回哑节点的下一个节点即可。

  • 相关阅读:
    gitbook
    Goland IDE使用
    go-zero RPC 框架安装 (goctl安装, protoc安装, etcd安装)
    go 打包部署
    GO redis
    go 常见异常
    go 异常处理
    go常用数据处理 (json, map, 结构体)
    Kafka日志消息
    【leetcode_easy_math】1317. Convert Integer to the Sum of Two No-Zero Integers
  • 原文地址:https://www.cnblogs.com/wuyouwei/p/11767778.html
Copyright © 2011-2022 走看看