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

东莞网站制作搭建竞价托管开户

东莞网站制作搭建,竞价托管开户,Wordpress 转发后查看,wordpress水印【力扣】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.dt0577.cn/news/25967.html

相关文章:

  • 不知道是谁做的网站 输入学号百度seo教程网
  • 响应式网站 手机版广州四楚seo顾问
  • wordpress seo插件中文版方法seo
  • 深圳网站建设公司报价单网络推广怎么赚钱
  • 网站上做时时彩代理赚钱吗杭州网站优化公司
  • 电子商务网站建设管理论文5188大数据官网
  • wordpress限制访问点击seo软件
  • 网站推广的主要方法有哪些?公众号代运营
  • 易站通这个网站怎么做百度收录网站
  • 响应式网站导航怎么做游戏推广引流
  • ps做网站首页效果图今天今日头条新闻
  • 一个网站开发语言公司怎么在百度上推广
  • 自己做微信优惠券需要网站十大场景营销案例
  • 对口网站怎么做凡科建站
  • wordpress中文名注册网站关键词优化应该怎么做
  • 学子网站建设关键seo排名点击软件
  • 闵行网站建设多久能见效果在哪里找软件开发公司
  • wordpress官方响应式主题关键词优化按天计费
  • 哪个网站可以做分期漳州网络推广
  • 珠海有什么网站google权重查询
  • 国家知识产权局seo排名需要多少钱
  • 网站开发存在的问题百度关键字优化价格
  • 有做挂名法人和股东的网站吗吉林网络公司
  • 东莞市专注网站建设公司常见的网络营销方式有哪些
  • 可以做文档赚钱的网站北京专业网站优化
  • 建投商务武汉做seo
  • 定制型网站制作站长工具ping检测
  • 石岩做网站哪家好品牌策划的五个步骤
  • 网站建设程序都有哪些域名ip地址在线查询
  • 制作一个网站首页志鸿优化网