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

淄博微信网站建设医院有关页面设计模板

淄博微信网站建设,医院有关页面设计模板,营销型网站制作建设,公司网站能自己做二维码1. BFS 算法框架 BFS#xff1a;用来搜索 最短路径 比较合适#xff0c;如#xff1a;求二叉树最小深度、最少步数、最少交换次数#xff0c;一般与 队列 搭配使用#xff0c;空间复杂度比 DFS 大很多DFS#xff1a;适合搜索全部的解#xff0c;如#xff1a;寻找最短…1. BFS 算法框架 BFS用来搜索 最短路径 比较合适如求二叉树最小深度、最少步数、最少交换次数一般与 队列 搭配使用空间复杂度比 DFS 大很多DFS适合搜索全部的解如寻找最短距离一般与 栈 搭配使用 def BFS(start, target):计算从 start 到 target 的最近距离q [] # 队列先进先出visited {} # 避免走回头路q.append(start) # 将起点加入队列visited.add(start) step 0 # 记录扩散步数while q:for i in range(len(q)):cur q.pop()# 判断是否达到终点if cur target:return step# 将 cur 相邻的节点加入队列for j in cur.adj():if j not in visited:q.insert(0, j) # 队列先进先出visited.add(j)# 更新步数step 12. 二叉树的最小深度 111. 二叉树的最小深度 给定一个二叉树找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明叶子节点是指没有子节点的节点。输入root [3,9,20,null,null,15,7] 输出2 示例 2输入root [2,null,3,null,4,null,5,null,6] 输出5提示树中节点数的范围在 [0, 105] 内 -1000 Node.val 1000题解 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def minDepth(self, root: TreeNode) - int:if not root:return 0q [root]step 1while q:size len(q)for i in range(size):node q.pop(0)# 判断是否达到终点结束条件if node.left None and node.right None:return step# 将相邻节点添加到队列if node.left ! None:q.append(node.left)if node.right ! None:q.append(node.right)# 更新步数step 1return stepif __name__ __main__:# root [3,9,20,null,null,15,7]root TreeNode(3)node1 TreeNode(9)node2 TreeNode(20)node3 TreeNode(15)node4 TreeNode(7)root.left node1root.right node2node2.left node3node2.right node4s Solution()print(s.minDepth(root))3. 二叉树的层序遍历 102. 二叉树的层序遍历 给你二叉树的根节点 root 返回其节点值的 层序遍历 。 即逐层地从左到右访问所有节点。示例 1输入root [3,9,20,null,null,15,7] 输出[[3],[9,20],[15,7]] 示例 2输入root [1] 输出[[1]] 示例 3输入root [] 输出[]提示树中节点数目在范围 [0, 2000] 内 -1000 Node.val 1000题解 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def levelOrder(self, root: TreeNode) - List[List[int]]:if root None:return []q [root]res []while q:level [] # 记录每层节点的值for i in range(len(q)):node q.pop()level.append(node.val)# 说明该节点没有左右节点了if node.left None and node.right None:continueif node.left ! None:q.insert(0, node.left)if node.right ! None:q.insert(0, node.right)# 将每层的结果添加到 resres.append(level)return res4. 打开转盘锁 752. 打开转盘锁 你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 。每个拨轮可以自由旋转例如把 9 变为 00 变为 9 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 0000 一个代表四个拨轮的数字的字符串。列表 deadends 包含了一组死亡数字一旦拨轮的数字和列表里的任何一个元素相同这个锁将会被永久锁定无法再被旋转。字符串 target 代表可以解锁的数字你需要给出解锁需要的最小旋转次数如果无论如何不能解锁返回 -1 。示例 1:输入deadends [0201,0101,0102,1212,2002], target 0202 输出6 解释 可能的移动序列为 0000 - 1000 - 1100 - 1200 - 1201 - 1202 - 0202。 注意 0000 - 0001 - 0002 - 0102 - 0202 这样的序列是不能解锁的 因为当拨动到 0102 时这个锁就会被锁定。 示例 2:输入: deadends [8888], target 0009 输出1 解释把最后一位反向旋转一次即可 0000 - 0009。 示例 3:输入: deadends [8887,8889,8878,8898,8788,8988,7888,9888], target 8888 输出-1 解释无法旋转到目标数字且不被锁定。提示1  deadends.length 500 deadends[i].length 4 target.length 4 target 不在 deadends 之中 target 和 deadends[i] 仅由若干位数字组成题解 class Solution:def openLock(self, deadends: List[str], target: str) - int:if target 0000:return 0visited {0000} # 记录已经穷举过的密码防止走回头路q [0000]step 0 # 步数while q:for i in range(len(q)):num q.pop()# 若刚好是目标就退出if num target:return stepif num in deadends:continue# 拨动密码锁将一个节点的未遍历相邻节点加入队列for j in range(4):# 向上拨动up self.plus_one(num, j)# 向下拨动down self.minus_one(num, j)# 若已经访问过则不添加到 visitedif up not in visited:q.insert(0, up)visited.add(up)if down not in visited:q.insert(0, down) visited.add(down)# 增加步数step 1return -1 def plus_one(self, num, j):a list(num)if a[j] 9:a[j] 0else:a[j] str(int(a[j]) 1)return .join(a)def minus_one(self, num, j):a list(num)if a[j] 0:a[j] 9else:a[j] str(int(a[j]) -1)return .join(a)参考BFS 算法框架套路详解 5. 钥匙和房间 841. 钥匙和房间 有 n 个房间房间按从 0 到 n - 1 编号。最初除 0 号房间外的其余所有房间都被锁住。你的目标是进入所有的房间。然而你不能在没有获得钥匙的时候进入锁住的房间。当你进入一个房间你可能会在里面找到一套不同的钥匙每把钥匙上都有对应的房间号即表示钥匙可以打开的房间。你可以拿上所有钥匙去解锁其他房间。给你一个数组 rooms 其中 rooms[i] 是你进入 i 号房间可以获得的钥匙集合。如果能进入 所有 房间返回 true否则返回 false。示例 1输入rooms [[1],[2],[3],[]] 输出true 解释 我们从 0 号房间开始拿到钥匙 1。 之后我们去 1 号房间拿到钥匙 2。 然后我们去 2 号房间拿到钥匙 3。 最后我们去了 3 号房间。 由于我们能够进入每个房间我们返回 true。 示例 2输入rooms [[1,3],[3,0,1],[2],[0]] 输出false 解释我们不能进入 2 号房间。提示n rooms.length 2 n 1000 0 rooms[i].length 1000 1 sum(rooms[i].length) 3000 0 rooms[i][j] n 所有 rooms[i] 的值 互不相同题解 class Solution:def canVisitAllRooms(self, rooms: List[List[int]]) - bool:visited {0} # 记录已经穷举过的钥匙防止走回头路queue [0]while queue:index_keys queue.pop()for i in rooms[index_keys]:if i not in visited:visited.add(i)queue.insert(0, i)return len(visited) len(rooms)这个题还可以用 DFS只需将 queue.insert 换成 queue.append 即可 参考7行DFS 8行BFS 两种方法 三种实现 超详细趣味基础解 Python 6. BFS 遍历图 # -- coding: utf-8 --def bfs(_graph, s):BFS 遍历 图:param _graph: 图:param s: 从哪个点开始遍历:return:q [s]visited {s}while q:vertex q.pop()nodes _graph[vertex]for node in nodes:if node not in visited:visited.add(node)q.insert(0, node)print(vertex)if __name__ __main__:# 图可以抽象为一个字典key 表示当前节点value 为该节点的下个节点集合graph {A: [B, C],B: [A, C, D],C: [A, B, D, E],D: [B, C, E, F],E: [C, D],F: [D],}bfs(graph, A) # 从 A 点开始输出 A、B、C、D、E、F参考[Python] BFS和DFS算法第1讲
http://www.dnsts.com.cn/news/166078.html

相关文章:

  • wordpress 加相关文章镇江做网站seo
  • 合肥庐阳区建设局网站郑州短视频培训机构
  • 微网站开发方案模板网站开发企业培训报名
  • 傻瓜式做网站哪个软件好阿里云主机怎么做两个网站吗
  • 湖北省和住房建设厅官方网站网站建设技术支持牛商网
  • 奉化网站建设eclipse 网站开发
  • 电影网站怎么做不犯法哈尔滨网站建设制作哪家便宜
  • 甘孜州建设局网站注册域名之后如何做网站
  • 中国机械加工网19易0下6拉en苏州seo安严博客
  • php网站开发软件语言珠海做网站专业公司
  • 工信部网站备案怎么登录中国建设工程安全协会网站
  • 大佛寺广州网站代码交易网站
  • 如何做自己网站云播win7怎么重新安装wordpress
  • 建设诚信网站商城推广软文范文
  • 公司搭建网站服务毕业室内设计代做网站
  • 做的好的购物网站四川建设人才网官网登录
  • 企业如何 建设好自己的网站扬中黄子来
  • 保险行业网站模板有没有做牛羊角的网站
  • 网站推广的英文contentjsq项目做网站
  • 重庆建设厅施工员证书查询网站原江苏省建设厅网站
  • 网站建设sql语句留言板建设网站论坛都需要哪些工具
  • 28商机网创业项目做竞价的网站做优化有效果吗
  • html5网站首页代码网页制作与网站建设从入门到精通 下载
  • 上海网站制作建设多少钱对网站建设建议
  • 萝岗免费网站建设实训网站建设的心得总结
  • 网站的后台怎么做调查问卷中小型网站建设 教案
  • 临沂网站建设推广大良营销网站建设渠道
  • 网站锚点怎么用分析网站统计对网络营销的价值
  • 教育机构电商网站建设加盟wordpress主题自定义模块
  • 360全景网站制作wordpress原因跳转