zoukankan      html  css  js  c++  java
  • 删除倒数第k个元素

    给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
    示例:
      给定一个链表: 1->2->3->4->5, 和 n = 2.
      当删除了倒数第二个节点后,链表变为 1->2->3->5.
      说明:
      给定的 n 保证是有效的。

    思想:这个和返回倒数第k个结点有点类似,只不过此时移动找到的是倒数第k个前驱结点,

    代码如下:

    public ListNode removeNthFromEnd(ListNode head, int n) {
            if(head == null) return null;
            //定义头结点的前驱结点
            ListNode cur = new ListNode(-1);
            cur.next = head;
            //定义两个结点,分别指向cur,其中sign用来移动,back用来返回链表
            ListNode sign = cur;
            ListNode back = cur;
            //先将cur移动n次
            while(n>0){
                cur = cur.next;
                n--;
            }
            //同时移动cur和sign,找到倒数第n个结点的前驱结点
            while(cur.next!=null){
                cur = cur.next;
                sign = sign.next;
            }
            //让它指向倒数第n个结点的下一个结点
            sign.next = sign.next.next;
            return back.next;
        }
  • 相关阅读:
    DataGridView
    View Designer
    错题集
    MetalKit_1
    倍道而行:选择排序
    ARKit_3_任意门
    ARKit__2_尺子项目
    关于scrollview的无限滚动效果实现
    tableview折叠动效
    NSURLSession的简单使用
  • 原文地址:https://www.cnblogs.com/du001011/p/10652732.html
Copyright © 2011-2022 走看看