当前位置: 首页 > news >正文

【leetcode】力扣算法之删除链表中倒数第n个节点【中等难度】

删除链表中倒数第n个节点

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

用例

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

在这里插入图片描述

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

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

提示

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

示例代码

解法1:普通解法

var removeNthFromEnd = function(head, n) {let len=0;let rootNode=head;while(head){len++;head=head.next;}if(len==1) return null;len=len-n+1;//截取的目标位置let i=1;head=rootNode;while(head){console.log(i,head.val)if(i==len-1){//删除下一个节点head.next=head.next.next;break;}if(i==len){//删除当前rootNode=head.next;break;}i++;head=head.next;}return rootNode;
};

解法2:辅助栈

/*** Definition for singly-linked list.* function ListNode(val, next) {*     this.val = (val===undefined ? 0 : val)*     this.next = (next===undefined ? null : next)* }*/
/*** @param {ListNode} head* @param {number} n* @return {ListNode}*/
var removeNthFromEnd = function(head, n) {let stack=[]let root=head;//入栈while(head){stack.push(head)head=head.next;}let next=null;for(let i=1;i<n;i++){next=stack.pop();}let del=stack.pop();//找到目标值let prev=stack.pop(); if(prev){prev.next=next;}else{root=next;}return root;
};

解法3: 双指针

/*** @param {ListNode} head* @param {number} n* @return {ListNode}*/
var removeNthFromEnd = function(head, n) {let dummy=new ListNode(0,head);let slow=dummy;let first=head;for(let i=0;i<n;i++){first=first.next;}while(first){first=first.next;slow=slow.next;}slow.next=slow.next.next;return dummy.next;
};

执行情况:双指针
在这里插入图片描述
Tip

越简单的题,使用越多的解法才能让自己对代码的理解得以增强哦

http://www.lryc.cn/news/279596.html

相关文章:

  • C51--摇头测距小车
  • vue中slot和template用法传值
  • SQL性能分析-整理
  • 常用计算电磁学算法特性与电磁软件分析
  • PLC数组队列搜索FC(SCL代码+梯形图程序)
  • NUS CS1101S:SICP JavaScript 描述:前言、序言和致谢
  • 软件测试常见问题2
  • WPF XAML(一)
  • 每日一题:LeetCode-LCR 007. 三数之和
  • 四元数傅里叶变换(Quaternion Fourier Transforms) 在信号和图像处理中的应用
  • vue项目之.env文件.env.dev、test、pro
  • Fabric2.2:在有系统通道的情况下搭建应用通道
  • 测试人员必备基本功(2)
  • 第十二章 Java内存模型与线程(一)
  • C# WPF 数据绑定
  • 进程和线程的比较
  • 深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析
  • 科技创新领航 ,安川运动控制器为工业自动化赋能助力
  • 图像异或加密及唯密文攻击
  • React Grid Layout基础使用
  • 第11章 1 文件及IO操作
  • Tomcat服务实例部署
  • 高精度彩色3D相机:开启崭新的彩色3D成像时代
  • 借助Gitee将typora图片上传CSDN
  • 几件奇怪的事产生的疑团
  • 陶瓷碗口缺口检测-图像增强
  • gitee创建远程仓库并克隆远程仓库到电脑
  • 3D人体姿态估计(教程+代码)
  • Python异步编程|PySimpleGUI界面读取PDF转换Excel
  • 制造领域 基础概念快速入门介绍