首页 > 其他分享 >力扣19.删除链表的倒数第 N 个结点

力扣19.删除链表的倒数第 N 个结点

时间:2023-10-13 11:13:41浏览次数:42  
标签:力扣 结点 19 head next 链表 倒数第 指针

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

 

示例 1:

输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]

 

示例 2:

输入:head = [1], n = 1
输出:[]

 

示例 3:

输入:head = [1,2], n = 1
输出:[1]

 

 

提示:

  • 链表中结点的数目为 sz
  • 1 <= sz <= 30
  • 0 <= Node.val <= 100
  • 1 <= n <= sz

 

常规解法:进行两趟扫描,第一次获取长度,第二次删除节点

 1 class Solution
 2 {
 3 public:
 4     ListNode *removeNthFromEnd(ListNode *head, int n)
 5     {
 6         ListNode *p=head;
 7         int length=0;
 8         while (p)
 9         {
10             p=p->next;
11             length++;
12         }
13         p=head;
14         for (int i=0;i<length-n-1;++i){
15             p=p->next;
16         }
17         if (n==length) //删除头节点
18             head=head->next;
19         else if (n==1) //删除尾节点
20             p->next=NULL;
21         else
22             p->next=p->next->next;
23         return head;
24     }
25 };

该题还可以使用栈和双指针来实现一趟扫描。其中双指针的思路是:second指针比first指针晚n-1个节点出发,当first指针到达尾部时,second指针刚好到达倒数第n个节点处。

标签:力扣,结点,19,head,next,链表,倒数第,指针
From: https://www.cnblogs.com/coderhrz/p/17761609.html

相关文章

  • [APIO2019] 路灯 题解
    LG5445把询问\(x,y\)看作平面上的点记当前时刻\(t\),\(l\)是与\(i\)连通的最左端,\(r\)是与\(i+1\)连通的最右端,可以通过set维护断边找到连边\((i,i+1)\)时\(x\in[l,i],y\in[i+1,r]\)连通了,考虑贡献提前计算,矩形\(+(q-t)\)。断边时同理\(-(q-t)\)剩下的问题是......
  • Webmin 远程命令执行 (CVE-2019-15107)
    说明内容漏洞编号CVE-2019-15107漏洞名称Webmin远程命令执行漏洞评级影响范围Webmin<=1.920漏洞描述该漏洞由于password_change.cgi文件在重置密码功能在重置密码功能中发现了一个错误,该错误允许恶意第三方由于缺少输入验证而执行恶意代码。修复方......
  • 面试必刷TOP101:1、反转链表
    一、题目给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。示例:输入:{1,2,3}返回值:{3,2,1}二、题解2.1使用栈求解栈是先进后出的。实现原理就是把链表节点一个个入栈,当全部入栈完之后再一个个出栈,出栈的时候在把出栈的结点......
  • python 链表
    fromtypingimportOptionalclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextclassSolution:defpartition(self,head:Optional[ListNode],x:int)->Optional[ListNode]:lessListPre......
  • 力扣18:四数之和(双指针+剪枝)
    给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a],nums[b],nums[c],nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0<=a,b,c,d <na、b、c 和 d 互不相同nums[a]+nums[b]......
  • 对于ogg19 mysql 中如果mysql中存在json数据类型,进程会abend问题报错信息 OGG-00774
    对于ogg19mysql是不支持json的这个数据类型还是比较常见的,这个数据类型是在ogg21才开始支持,对于这种报错可以打补丁进行修复Bug29998662:MySQLExtractAbendsWithoutErrorwithJSONdatatypesinbinlog 参考自:MySQLExtractAbendsWithoutErrorWithJSONDataT......
  • Z2219. [ABC235E] MST + 1
      先写一发LCA#include<bits/stdc++.h>usingnamespacestd;intn,q,x,y,dep[500005],jump[500005][22];vector<int>d[500005];voidfindep(intp,intf,intdp){ dep[p]=dp;//点p的深度为dp for(inti=0;i<=int(d[p].size()-1);i++) if(d[p][i]!=f) ......
  • C++ - VS2019配置pthread线程库
    1.说明在VS里用MS编译器不能直接调用pthread库,需要先自行下载该库:http://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip解压后用的到的只有Pre-built.2文件夹下的文件。 2.配置如下图分别配置三大项:包含目录-->...pthreads-w32-2-9-1-release\Pre-......
  • 019 数据库学习笔记--代码生成工具(满满的成产力)
    -------------------------------生成实体类-------------------------------declare@TableNamesysname='ViewQualityInfo'declare@TableNameLsysname='viewQualityInfo'declare@Resultvarchar(max)='///<summary>///'......
  • 【力扣】9.回文数
    转化成字符串之后进行判断的思路很简单咱就不写了。做一下进阶:你能不将整数转为字符串来解决这个问题吗?我最初的思路:用二进制掩码异或判断。学到了新知识:GCC内建函数__builtin_clz(CountLeadingZeros,统计前导零个数)->获取二进制正数最大有效位。细节:注意掩码获取时int最高位1......