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

网上做网站网站代理赚钱吗青海公路建设信息服务网站

网上做网站网站代理赚钱吗,青海公路建设信息服务网站,颍上建设网站,wordpress的数据库主机题目 给你一个链表的头节点 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.dnsts.com.cn/news/187441.html

相关文章:

  • preec网站app软件下载免费
  • 什么网站可以做引文分析wordpress皮肤下载
  • 房产网站建设什么类型网站模板怎么用法
  • 上海专业网络营销关键词seo排名优化推荐
  • 广西住房与城乡建设厅网站如何做网络营销推广55
  • 如何做网站赚如何让网站自适应手机
  • 网站在哪里设置域名派多格宠物网站建设
  • 做网站的公司前三名四川网站建设yijia028
  • 推广做网站淄博免费网站建设
  • 绍兴金圣建设有限公司网站中山网站建设包括哪些
  • 福建省建设资格注册中心网站把网站放到域名上
  • 网站如何建设与安全管理制度wordpress短代码可视化
  • php网站美化服务器做php网站
  • 寻亲网站开发设计文档成都电子商务平台网站制作报价
  • 网站建设佰金手指科杰二七标书制作需要学多久
  • 深圳外贸响应式网站建设公司网站建设及维护管理办法
  • 做摄像头模组的网站阿里云WordPress主题
  • 大型网站建设的必须条件wordpress4.6字体
  • 为什么要推行政务公开网站建设江苏做帖子网站
  • 观音桥网站建设网站建设美橙做过网站案例
  • 怎样做网站公司的销售中机建设一公司网站
  • 整站快速排名wordpress极客社区小程序
  • 上海网站制作培训班wordpress建站微信联系
  • 官方网站开发用什么语言网页打不开验证码图片
  • 免费个人网站怎么建立邵阳最新新闻
  • 什么样的网站利于seo集团微信网站方案策划
  • 有用织梦做的大网站吗安庆做网站企业
  • 人和马做的网站北京专业的网站建设
  • 做淘宝头像的网站有哪些中信建设有限责任公司杨建强
  • 网站建设合作协议模板wordpress index of