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

一个一起做网站南昌专业做网站公司有哪些

一个一起做网站,南昌专业做网站公司有哪些,网站的表现形式,织梦淘宝客网站题目 给你一个链表的头节点 head #xff0c;判断链表中是否有环。如果存在环 #xff0c;则返回 true 。 否则#xff0c;返回 false 。 如果链表中有某个节点#xff0c;可以通过连续跟踪 next 指针再次到达#xff0c;则链表中存在环。 为了表示给定链表中的环#xf…题目 给你一个链表的头节点 head 判断链表中是否有环。如果存在环 则返回 true 。 否则返回 false 。 如果链表中有某个节点可以通过连续跟踪 next 指针再次到达则链表中存在环。 为了表示给定链表中的环评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置索引从 0 开始。注意pos 不作为参数进行传递仅仅是为了标识链表的实际情况。 示例 输入head [3,2,0,-4], pos 1 输出true 解释链表中有一个环其尾部连接到第二个节点。 快慢指针法 快慢指针法也叫Floyd判圈法是解决链表中环检测问题的经典算法。其核心思想是使用两个指针一个快指针每次移动两个节点一个慢指针每次移动一个节点。如果链表中存在环快慢指针最终会在环中的某一点相遇。若不存在环快指针会先到达链表尾部。使用快慢指针法求解本题的主要步骤如下。 1、初始化指针。开始时定义两个指针一个快指针fast和一个慢指针slow均指向链表的头节点。 2、移动指针。每次迭代时慢指针slow向前移动一步快指针fast向前移动两步。如果链表中存在环由于快指针移动速度是慢指针的两倍最终快指针会追上慢指针。 3、终止条件。如果链表中没有环快指针会首先到达链表的尾部None这时可以确定链表无环。相反如果快慢指针相遇则表明链表中存在环。 根据上面的算法步骤我们可以得出下面的示例代码。 class ListNode:def __init__(self, x):self.val xself.next Nonedef create_linked_list(length, pos -1):if length 1 or (pos ! -1 and (pos 0 or pos length)):return Nonehead ListNode(0)current headcycle_node Nonefor i in range(1, length 1):new_node ListNode(i)current.next new_nodecurrent new_nodeif i pos 1:cycle_node new_node# 只有当pos有效且不为-1时才创建环if cycle_node:current.next cycle_node# 返回真正的头节点忽略初始的0节点return head.nextdef has_cycle_fast_slow_pointer(head):if head is None or head.next is None:return Falseslow headfast head.nextwhile fast is not None and fast.next is not None:if slow fast:return Trueslow slow.nextfast fast.next.nextreturn False# 创建有环链表 head_with_cycle create_linked_list(4, 1) # 输出: True print(has_cycle_fast_slow_pointer(head_with_cycle))# 创建无环链表 head_no_cycle create_linked_list(4, -1) # 输出: False print(has_cycle_fast_slow_pointer(head_no_cycle)) 哈希表法 哈希表法利用数据结构中的哈希表来记录每个访问过的节点。由于哈希表的查找效率非常高平均时间复杂度为O(1)故我们可以在遍历链表的同时将每个访问过的节点添加到哈希表中。当发现某个节点已经被访问过即该节点存在于哈希表中时则可断定链表中存在环。使用哈希表法求解本题的主要步骤如下。 1、初始化。创建一个空的哈希表在Python中通常是集合set。 2、遍历链表。从链表头开始遍历对于每一个访问到的节点执行以下操作。 1检查当前节点是否已经在哈希表中。 2如果不在将当前节点添加到哈希表中并继续遍历下一个节点。 3如果在哈希表中发现了当前节点说明存在环直接返回True。 3、遍历结束。如果遍历完整个链表都没有发现重复的节点则说明链表中没有环返回False。 根据上面的算法步骤我们可以得出下面的示例代码。 def has_cycle_hashset(head):visited_nodes set()while head is not None:# 如果节点已经在集合中说明有环if head in visited_nodes:return Truevisited_nodes.add(head)head head.next# 遍历结束没有发现环return False# 创建有环链表 head_with_cycle create_linked_list(4, 1) # 输出: True print(has_cycle_hashset(head_with_cycle))# 创建无环链表 head_no_cycle create_linked_list(4, -1) # 输出: False print(has_cycle_hashset(head_no_cycle)) 总结 快慢指针法不需要额外的空间时间复杂度为O(n)其中n是链表中的节点数量。哈希表法则提供了另一种思路虽然它需要额外的O(n)空间但优点是实现直观易于理解和编码。 在实际应用中如果对空间复杂度有严格要求推荐使用快慢指针法。如果空间不是问题而对代码的简洁性和直观性有更高要求哈希表法也是一个不错的选择。 如果想阅读最新的文章或者有技术问题需要交流和沟通可搜索并关注微信公众号“希望睿智”。
http://www.hkea.cn/news/14546550/

相关文章:

  • 从化网站开发公司抓取网站访客qq代码
  • 论坛网站建设开源工具网站兼容
  • 邯郸做wap网站的公司河南省建设监理协会官网
  • 做网站app要多少钱具有价值的微网站建设
  • 新华美玉官方网站在线做php 开发手机网站建设
  • 建筑设计资料集江门关键词按天优化
  • 网站开发 文献综述关键词提取工具app
  • php做网站评价wordpress手机号码
  • 如何做征信公司网站佛山网站建设网站
  • 深圳建设局投标网站乐至县建设局网站
  • 查找5个搜索引擎作弊的网站什么网站的图片可以做商用
  • 邯郸做外卖网站的公司小程序怎么删除
  • 嘉兴外贸网站建设站长工具关键词
  • 济南网站建设工资有没有网站专门做cnc招聘
  • 有什么做设计接任务的网站开平市住房和城乡建设局网站
  • 婚恋网站应聘做销售医院的网站关键词定位一般是什么
  • 桂平市住房和城乡建设局门户网站制作网站 太原
  • 霍山网站建设网站集约化建设工作汇报
  • 网站设计属于什么经营范围凉山州住房与城乡建设局网站
  • 南通网站群建设wordpress对比
  • 手机版企页网站案例建筑网站绿地新里城
  • 学校网站建设制作方案做半成品网站
  • 长沙优化网站怎么开发一个网页
  • 备案个人网站 淘宝客做百度推广需要有自己的网站吗
  • 青岛专业网站建设推广报价电子商务网站建设技术基础--asp.net程序设计教学大纲
  • 免费一级做网站绍兴做网站价格
  • 在手机上创建网站吗推广链接怎么自己搞定
  • 霸州建网站青海网站建设公司多少钱
  • 静态网站建设中源码设计素材图片大全 psd素材
  • 兴化网站开发网络推广引流