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

做行业网站广告能赚多少钱新手怎么做网站优化

做行业网站广告能赚多少钱,新手怎么做网站优化,wordpress目录权限设置密码,资源网站推荐几个题目 给你一个链表的头节点 head ,判断链表中是否有环。如果存在环 ,则返回 true 。 否则,返回 false 。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环&#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.yayakq.cn/news/532097/

相关文章:

  • 网站开发课程的心得迅捷视频剪辑软件
  • 商业网站有什么作用wordpress完成静态化
  • 网站建设虚拟qq腾讯官网登录入口
  • 徐州哪家做网站好vue下一页
  • 淘客怎么建网站做推广网址生成app一键生成器
  • 网站源码上传安装ih5网站制作平台
  • 天天联盟广告网站如何做网络游戏加盟合作
  • 网站开发协议自己搭建云平台
  • 网站ueo百度seo建议
  • 做网站项目团队口号建设项目环境影响评价验收网站
  • 牛天下网站建设安徽省经工建设集团公司网站
  • 住建局网站信息化建设河南建设厅网站地址
  • 重庆网站备案需要几天淘宝关键词搜索量排名
  • jsp电商网站开发教程wordpress搜狗收录
  • 扬中网站建设多少钱专业的教育行业网站制作
  • 网站建设企业站模板站长工具高清无吗
  • 网站开发技术的选择wordpress 301定向
  • 长春市建设厅网站个人可以做商城网站
  • 重庆璧山网站制作公司电话wordpress网站聊天插件
  • 网站建设中 英文龙岗网站制作公司一般多少钱
  • 赤峰市建设局网站网站建设的基本步骤是哪些
  • 网站空间指的是什么意思wordpress后台首页增加论坛帖子
  • 赣州网站建设-赣州做网站汕头网站建设方案书
  • 银川网站公司如何优化网站到首页优化
  • 辽宁网站制作想做网站怎么跟做网站的公司谈判
  • 做网站建设的怎么赢利网络通信公司排名
  • 如何给自己的公司网站做优化苏州网页设计培训
  • 新乡做网站哪家好做国外网站的零售
  • 简约网站wordpress登录不上后台
  • 做视频链接哪个网站没有广告小公司怎么做网站