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

上海网站设计工作室深圳哪里做网站

上海网站设计工作室,深圳哪里做网站,免费制作的企业网站,东莞网站制作模板19.删除链表的倒数第N个节点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5] 示例 2:输入:head [1], n 1 输出&…

19.删除链表的倒数第N个节点

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
示例 1:
image.png
输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5]
示例 2:输入:head = [1], n = 1 输出:[]
示例 3:输入:head = [1,2], n = 1 输出:[1]

我的思路

删除倒数第n个节点,问题就在于如何去定位这倒数第n个,从前到后就是需要有个索引,但现在问题在于链表总的长度并不知道,所以需要第一步先去找到链表的长度:通过定义一个size,然后对链表进行遍历,逐渐加1,获取链表长度。然后定义索引为index=size-n。再遍历到索引处,执行删除。

class ListNode(object):def __init__(self, val=0, next=None):self.val = valself.next = nextclass Solution(object):def removeNthFromEnd(self, head, n):""":type head: ListNode:type n: int:rtype: ListNode"""dummy_node = ListNode(next=head)cur = dummy_nodesize = 0 # 链表长度while cur.next:cur = cur.nextsize += 1temp = dummy_nodeindex = size - nfor i in range(index):temp = temp.nexttemp.next = temp.next.nextreturn dummy_node.next

进阶:你能尝试使用一趟扫描实现吗?
可以用快慢指针法。
双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。(比较巧妙)
思路是这样的,但要注意一些细节。
分为以下几步:

  1. 定义虚拟节点
  2. 定义fast指针和slow指针,初始值为虚拟头结点,如图:

image.png

  1. fast首先走n + 1步 ,为什么是n+1呢,因为只有这样同时移动的时候slow才能指向删除节点的上一个节点(方便做删除操作),如图:

image.png

  1. fast和slow同时移动,直到fast指向末尾,如图:

注意是 fast为None 而不是 fast.next 为None
image.png

  1. 删除slow指向的下一个节点,如图:

image.png

class Solution(object):def removeNthFromEnd(self, head, n):""":type head: ListNode:type n: int:rtype: ListNode"""dummy_node = ListNode(next=head) # 定义一个虚拟节点fast = dummy_nodeslow = dummy_nodefor i in range(n+1): # fast先走n+1步fast = fast.nextwhile fast != None: # fast和slow同时走fast = fast.nextslow = slow.nextslow.next = slow.next.nextreturn dummy_node.next

本文文字及图片参考:https://programmercarl.com/

http://www.yayakq.cn/news/86272/

相关文章:

  • 新吴区推荐做网站公司自助建站的软件
  • 无锡专业做网站的免费域名注册 国外
  • 西安企业网站制作柳州 网站开发
  • wordpress 自定义字段调用百度seo原理
  • 江苏网站设计方案苏州网站备案查询
  • 网站建设服务收费网络推广优化网站
  • 网站建设初期怎么添加内容推荐好的设计网站
  • 虚拟币网站开发国家备案查询
  • 做决定网站深圳seo网站优化
  • 上海网站建设沪icp备深圳有做网站的公司吗
  • 怎样做学校网站营业执照怎么申报年报
  • 厦门网站建设公司哪个好有域名有服务器怎么做网站
  • 上海免费网站建设品牌客户关系管理系统名词解释
  • 做电子请帖的网站qq网站代码
  • 音乐网站功能太原网站建设51sole
  • 微网站与移动开发是做什么的seo加盟代理
  • 台州网站推广技巧付费上海专业的网站建设公司排名
  • 电脑报价网站网站怎样做网银支付
  • 招聘网站简历数据分析怎么做微信公众号开发商城
  • 外卖优惠券网站怎么做看手表网站
  • 大气网站后台界面不能用于制作网页的软件
  • 网站没有域名丽水微信网站建设公司
  • 网站设计的大公司有域名怎么建网站
  • 网站开发用 c php泰州网站推广见效快
  • 网站快速排名服务商网站用什么语言好
  • 招聘网站哪个好用青岛网站制作工作室
  • 网站开发未按合同约定开发时间完工网店美工主要学什么
  • 网站开发过时了网络营销的优势是什么
  • 商城网站建设价格太原金茂大厦做网站的
  • 怎样自己制作公司网站上传珠海网站建设搭建