首页 > 其他分享 >删除链表的倒数第N个节点

删除链表的倒数第N个节点

时间:2023-06-15 14:36:41浏览次数:38  
标签:ListNode 删除 节点 链表 root 倒数第


删除链表的倒数第N个节点

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

示例:

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

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

给定的 n 保证是有效的。

解题思路: 用两个指针一前一后遍历链表,两者相差 n + 1个节点, 当前面的指针遍历完链表后, 后面的指针位置就是需要删除的节点的前一个位置.

class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode root = new ListNode(0);
        root.next = head;
        ListNode first = root, second = root;
        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 root.next;
    }
}


标签:ListNode,删除,节点,链表,root,倒数第
From: https://blog.51cto.com/u_14813899/6487207

相关文章

  • 环形链表 II
    环形链表II题目:给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如果pos是-1,则在该链表中没有环。注意,pos仅仅是用于标识环的情况,并不会作为参数传递到函数中......
  • 相交链表
    相交链表题目:编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点c1开始相交。示例1:输入:intersectVal=8,listA=[4,1,8,4,5],listB=[5,0,1,8,4,5],skipA=2,skipB=3输出:Referenceofthenodewithvalue=8输入解释:相交节点的值为8(注意,如果......
  • 链表划分
    链表划分题目:描述给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序。样例样例1:输入:list=nullx=0输出:null解释:空链表本身满足要求样例2:输入:list=1->4->3->2->5->2->nullx=3输出:1->2-......
  • 链表
    数组的内存空间是连续的,链表是不连续的链表分为单端链表和双端链表访问O(N)搜索O(N)插入O(1)删除O(1)写很快但是读很慢常用操作:1.创建链表2.添加元素3.访问元素4.查找元素5.删除元素6.链表的长度203给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.......
  • 一篇就让小白入门K8S,使用Minikube来搭建本地的单节点K8S集群
    开篇Kubernetes(通常简称为K8s)是一个开源的容器编排平台,它为应用程序的部署、扩展和管理提供了强大的工具和功能。在本文中,我们将通过一个实战案例,引导您进入Kubernetes的世界,了解其基本概念和架构,并帮助您安装和配置一个简单的Kubernetes集群。Kubernetes概述Kubernetes是一个......
  • [C语言/PTA] 学生成绩链表处理
    题目要求本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分数线的学生结点从链表中删除。函数接口定义:structstud_node*createlist();structstud_node*deletelist(structstud_node*head,intmin_score);函数createlist利用scanf从输入......
  • [C语言/PTA] 单链表结点删除
    题目要求本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下:structListNode{intdata;ListNode*next;};函数接口定义:structListNode*readlist();structListNode*deletem(structListNode*L,intm);......
  • [C语言/PTA] 建立学生信息链表
    题目要求本题要求实现一个将输入的学生成绩组织成单向链表的简单函数。函数接口定义:voidinput();该函数利用scanf从输入中获取学生的信息,并将其组织成单向链表。链表节点结构定义如下:structstud_node{intnum;/*学号*/charnam......
  • 2023-06-14:我们从二叉树的根节点 root 开始进行深度优先搜索。 在遍历中的每个节点处,
    2023-06-14:我们从二叉树的根节点root开始进行深度优先搜索。在遍历中的每个节点处,我们输出D条短划线(其中D是该节点的深度)然后输出该节点的值。(如果节点的深度为D,则其直接子节点的深度为D+1根节点的深度为0如果节点只有一个子节点,那么保证该子节点为左子节点给出遍......
  • 2023-06-14:我们从二叉树的根节点 root 开始进行深度优先搜索。 在遍历中的每个节点处,
    2023-06-14:我们从二叉树的根节点root开始进行深度优先搜索。在遍历中的每个节点处,我们输出D条短划线(其中D是该节点的深度)然后输出该节点的值。(如果节点的深度为D,则其直接子节点的深度为D+1根节点的深度为0如果节点只有一个子节点,那么保证该子节点为左子节点给出遍历输出......