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

宁波品牌网站设计特点全国免费发布广告信息

宁波品牌网站设计特点,全国免费发布广告信息,如何建CMS网站,西安网站建设联系方式【力扣】19. 删除链表的倒数第 N 个结点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5] 示例 2: 输入:head [1], n…

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

给你一个链表,删除链表的倒数第 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

题解

方法一:两次遍历

  • 先遍历一次链表,求出链表的总长度。
  • 根据总长度 length 的值-n,就算出需要再遍历多少个节点,找到要删除的节点的前一个节点 x。
  • 将 x 节点的 next 指针指向下下一个节点就可以删除节点了。
class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) { this.val = val; }ListNode(int val, ListNode next) { this.val = val;this.next = next; }
}public class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {if (head == null || n <= 0) {return head;}//增加一个特殊节点,方便边界处理ListNode dummyNode = new ListNode(-1);dummyNode.next = head;ListNode cur = dummyNode;//第一次遍历,计算链表总长度int length = 0;while (cur.next != null) {cur = cur.next;++length;}//如果链表总长度小于n,那就直接返回if (length < n) {return head;}//计算第二次遍历多少个节点int num = length - n;cur = dummyNode;//第二次遍历,找到要删除节点的前一个节点while (num > 0) {cur = cur.next;--num;}//删除节点,并返回cur.next = cur.next.next;return dummyNode.next;}
}

方法二:一次遍历(快慢指针)

需要两个指针 slow 和 fast。fast 指针先走 n 步,接着 slow 和 fast 指针同时往前走,当 fast 指针走到链表末尾时,slow 指针就正好走到要删除的节点的前一个位置了,最后 slow 节点的 next 指针指向下下一个节点,就可以完成删除操作。

class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) { this.val = val; }ListNode(int val, ListNode next) { this.val = val;this.next = next; }
}public class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {//增加一个特殊节点方便边界判断ListNode dummyNode = new ListNode(-1);dummyNode.next = head;ListNode slow = dummyNode;ListNode fast = dummyNode;//第一个循环,fast 指针先往前走n步while (n > 0 && fast != null) {fast = fast.next;n--;}// n > 链表length,fast走n步到尾了,于是后面的判断就不用做了,直接返回if (fast == null) {return head;}//第二次,fast、slow指针一起走//当遍历结束时,slow指针就指向要删除的节点的前一个位置while (fast.next != null) {slow = slow.next;fast = fast.next;}//删除节点并返回slow.next = slow.next.next;return dummyNode.next;}
}
http://www.15wanjia.com/news/43268.html

相关文章:

  • 微商代理怎么做seo免费浏览网站
  • 网站收益站群seo
  • 四川网站建设的公司哪家好软文广告有哪些
  • 如何开始做b2b网站沈阳seo优化
  • 网站开发及维护是什么windows优化大师怎么卸载
  • 天津做优化的网站有多少家互联网培训班学费多少
  • 怎么做自动下单网站国际重大新闻事件10条
  • 机电网站建设seo快速收录快速排名
  • 惠州做网站建设价格北京企业网络推广外包
  • 用什么软件建手机网站免费b2b网站大全免费
  • 南宁网站建设网站佛山疫情最新消息
  • 北京上云科技网站建设如何做推广呢
  • 闸北区网站制作手机网站制作平台
  • 网站怎么做右上角消息提醒百度推广退款投诉
  • 网站 模块长安seo排名优化培训
  • n怎样建立自己的网站网络运营培训班多少钱
  • 网站建设彩票关键词优化教程
  • 有哪些可以做问卷赚钱的网站视频营销成功的案例
  • 现在手机网站用什么做的好高端网站定制
  • 用服务器如何做网站seo关键字优化软件
  • 网站设计论文经济可行性分析seo推广是做什么
  • 模块网站需要多少钱代写软文
  • 1个人做多网站负责人sem竞价专员
  • 昆明网站建设搜q.479185700西安seo网络优化公司
  • 为什么做外贸独立网站seo是什么意思广东话
  • 网站做前端重庆seo顾问
  • 南京网站开发南京乐识优营销型外贸网站建设
  • 济南学习网站制作中国50强企业管理培训机构
  • wordpress justnews在运营中seo是什么意思
  • 做词频分析的网站枫树seo网