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

网页h5嘉兴seo外包公司

网页h5,嘉兴seo外包公司,济南做网站的公司哪家好,觅知网免费素材图库文章目录 题目方法一:节点加入集合找索引方法二:直接计算长度,然后找出要删除的节点的前一个节点方法三:栈方法四:前后双指针 题目 这题的关键在与两个点 一定要设置一个哑结点,防止删除第一个元素时,导致空…

文章目录

    • 题目
    • 方法一:节点加入集合找索引
    • 方法二:直接计算长度,然后找出要删除的节点的前一个节点
    • 方法三:栈
    • 方法四:前后双指针

题目

这题的关键在与两个点

  1. 一定要设置一个哑结点,防止删除第一个元素时,导致空指针异常
    在这里插入图片描述

  2. 删除链表的元素其实就等价于找到这个元素的前一个元素
    在这里插入图片描述

在这里插入图片描述

方法一:节点加入集合找索引

在这里插入图片描述

先将ListNode存到list 然后直接找到要删除节点的前一个节点即可(node.next = node.next.next)

  public static ListNode removeNthFromEnd(ListNode head, int n) {ListNode pre = new ListNode(0, head);//创建哑结点  解决要删除的元素时第一个 空指针异常List<ListNode> list = new ArrayList<>();//将链表节点存到listListNode h = pre;while(h != null){list.add(h);h = h.next;}//找到要删除的数的前一个节点ListNode node = list.get(list.size()-1-(n-1)-1);node.next = node.next.next;return pre.next;}

方法二:直接计算长度,然后找出要删除的节点的前一个节点

在这里插入图片描述

       public static ListNode removeNthFromEnd(ListNode head, int n) {//得出链表的长度int length   =  getLength(head);ListNode pre = new ListNode(0, head);//创建哑结点  解决要删除的元素时第一个 空指针异常//倒数n个 为  length - n + 1int l = length - n + 1;ListNode cur = pre;for (int i = 1; i < l ; i++ ) {cur = cur.next;}cur.next = cur.next.next;return pre.next;}//计算链表长度public static int getLength(ListNode head){int len = 0;while(head !=null){len ++;head = head.next;}return len;}

方法三:栈

依次入栈,直到null 然后要删除的元素 n = 多少 就弹出对少元素 弹出的元素就是要删除的元素 例如找n=1 倒数第一个 则直接弹出栈顶元素删除即可

此时当弹出n个数之后 ,此时栈顶其实就是要删除的数的前一个数了,也满足将删除链表元素转换为找到要删除元素的前一个元素

在这里插入图片描述

   public static ListNode removeNthFromEnd(ListNode head, int n) {ListNode dummy = new ListNode(0, head);//哑结点  删除第一个元素空指针异常Deque<ListNode> stack = new LinkedList<ListNode>(); //栈ListNode cur = dummy;while (cur != null) {stack.push(cur);cur = cur.next;}for(int i = 0; i<n ; i++){stack.pop();//弹出对应的栈顶元素  最后弹出的元素就是要删除的元素}//此时要删除的前一个元素时栈顶元素ListNode pre = stack.peek();pre.next = pre.next.next;return dummy.next;}

方法四:前后双指针

关键在于指针的设置,fast起始就比slow快一个节点,然后按照n=? fast往前移动?个位置,然后再slow和fast同步移动,直到fast走到null,此时slow指向的就是要删除元素的前一个位置(也就是为什么开始就要fast比slow快一个位置的原因,不然等fast走到null了,结果slow指向的要删除的元素,这样不太好执行node.next = node.next.next操作,因为删除链表的元素其实就等价于找到这个元素的前一个元素)

在这里插入图片描述

    public static ListNode removeNthFromEnd(ListNode head, int n) {ListNode dummy = new ListNode(0, head);//哑结点  防止删除第一个元素空指针异常ListNode  fir = head;ListNode  bef = dummy;//先指针领先 bef  n 个位置for(int i=0;i<n;i++){fir = fir.next;}//当 fir遍历到链表的末尾时, bef的下一个节点就是我们需要删除的节点。while(fir !=null){fir =fir.next;bef = bef.next;}bef.next = bef.next.next;return dummy.next;}
http://www.tj-hxxt.cn/news/46830.html

相关文章:

  • 沂源网站360广告联盟平台
  • 如何在网站中做内部链接灰色推广
  • 做公考题的网站网页制作教程书籍
  • 榆林国贸网站建设手机百度快照
  • wix网站怎么做滚动超级推荐的关键词怎么优化
  • 网站开发需要多少钱方案百度推广是什么工作
  • com域名注册查询属于seo网站优化
  • 网站搭建的策略与方法网络优化师
  • 成都网站建设龙兵品牌营销策略四种类型
  • 网站的锚点链接怎么做app拉新推广接单平台
  • 新建网站二级网页怎么做什么是网站优化
  • 自己可以建设环保公益网站吗seo推广优化排名软件
  • 做网站的公司哪些靠谱windows优化大师win10
  • 南京 公司网站制作360优化大师app
  • php网站编程seo优化首页
  • 意大利室内设计网站优化网站性能监测
  • 档案信息网站建设的意义高清的网站制作
  • wordpress内容类型常用的seo工具
  • 动漫设计前景如何淘宝关键词怎么优化
  • 网站建设找盖亚科技近一周热点新闻
  • 肇庆网站建设公司哪个好广告营销平台
  • 网站 需求北京网站制作400办理多少钱
  • 深圳市企业网站seo联系方式职业技术培训
  • 临沂做网站推广的公司哪家好网站推广seo教程
  • 优化型网站模板网址百度刷排名
  • 网站php文件上传网店推广的渠道有哪些
  • 淘宝做网站价格百度登录个人中心
  • 网站建设能用手机制作吗今日冯站长之家
  • 图片展示网站织梦源码天津谷歌优化
  • 常州网站专业制作近一周的新闻大事热点