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

上海政务网站建设陕西网页制作

上海政务网站建设,陕西网页制作,做外贸的网站要多少钱,网站开发和维护合同LeetCode-1766. 互质树【树 深度优先搜索 广度优先搜索 数组 数学 数论】 题目描述#xff1a;解题思路一#xff1a;DFS 中记录节点值的深度和编号#xff0c;回溯写法。关键点是1 nums[i] 50解题思路二#xff1a;0解题思路三#xff1a;0 题目描述#xff1… LeetCode-1766. 互质树【树 深度优先搜索 广度优先搜索 数组 数学 数论】 题目描述解题思路一DFS 中记录节点值的深度和编号回溯写法。关键点是1 nums[i] 50解题思路二0解题思路三0 题目描述 给你一个 n 个节点的树也就是一个无环连通无向图节点编号从 0 到 n - 1 且恰好有 n - 1 条边每个节点有一个值。树的 根节点 为 0 号点。 给你一个整数数组 nums 和一个二维数组 edges 来表示这棵树。nums[i] 表示第 i 个点的值edges[j] [uj, vj] 表示节点 uj 和节点 vj 在树中有一条边。 当 gcd(x, y) 1 我们称两个数 x 和 y 是 互质的 其中 gcd(x, y) 是 x 和 y 的 最大公约数 。 从节点 i 到 根 最短路径上的点都是节点 i 的祖先节点。一个节点 不是 它自己的祖先节点。 请你返回一个大小为 n 的数组 ans 其中 ans[i]是离节点 i 最近的祖先节点且满足 nums[i] 和 nums[ans[i]] 是 互质的 如果不存在这样的祖先节点ans[i] 为 -1 。 示例 1 输入nums [2,3,3,2], edges [[0,1],[1,2],[1,3]] 输出[-1,0,0,1] 解释上图中每个节点的值在括号中表示。 节点 0 没有互质祖先。节点 1 只有一个祖先节点 0 。它们的值是互质的gcd(2,3) 1。节点 2 有两个祖先节点分别是节点 1 和节点 0 。节点 1 的值与它的值不是互质的gcd(3,3) 3但节点 0 的值是互质的(gcd(2,3) 1)所以节点 0 是最近的符合要求的祖先节点。节点 3 有两个祖先节点分别是节点 1 和节点 0 。它与节点 1 互质gcd(3,2) 1所以节点 1 是离它最近的符合要求的祖先节点。 示例 2 输入nums [5,6,10,2,3,6,15], edges [[0,1],[0,2],[1,3],[1,4],[2,5],[2,6]] 输出[-1,0,-1,0,0,0,-1] 提示 nums.length n 1 nums[i] 50 1 n 105 edges.length n - 1 edges[j].length 2 0 uj, vj n uj ! vj 解题思路一DFS 中记录节点值的深度和编号回溯写法。关键点是1 nums[i] 50 对于节点 x我们需要计算节点值与 nums[x] 互质的最近祖先节点是哪个。 最暴力的做法是枚举 x 的所有祖先节点。但如果这棵树是一条链枚举 x 的所有祖先节点需要 O(n) 的时间每个点都这样枚举的话总共需要 O(n2) 的时间太慢了。 注意到所有节点的节点值都不超过 50我们可以枚举 [1,50] 中与 nums[x] 互质的数。由于要计算的是「最近」祖先对于节点值相同的祖先只需枚举深度最大的。因此对于节点 x我们至多枚举它的 50 个祖先。这样总共只需要 O(nU) 的时间其中 U50。 具体来说我们需要在递归这棵树的同时维护两组信息 valDepth 数组。其中 valDepth[j] 保存节点值等于 j 的最近祖先的深度。valNodeId 数组。其中 valNodeId[j] 保存节点值等于 j 的最近祖先的节点编号。 设当前节点值为 valnums[x]我们枚举 [1,50] 中与 val互质的数字 j计算出 valDepth[j] 的最大值及其对应的节点编号即为答案 ans[x]。 代码实现时可以预处理 [1,50]中有哪些数对是互质的。 # 预处理coprime[i] 保存 [1, MX) 中与 i 互质的所有元素 MX 51 coprime [[j for j in range(1, MX) if gcd(i, j) 1]for i in range(MX)] class Solution:def getCoprimes(self, nums: List[int], edges: List[List[int]]) - List[int]:n len(nums)g [[] for _ in range(n)]for x, y in edges:g[x].append(y)g[y].append(x)ans [0] * nval_depth_id [(-1, -1)] * MX # 包含深度和节点编号def dfs(x: int, fa: int, depth: int) - None:val nums[x] # x 的节点值# 计算与 val 互质的祖先节点值中节点深度最大的节点编号ans[x] max(val_depth_id[j] for j in coprime[val])[1]tmp val_depth_id[val] # 用于恢复现场val_depth_id[val] (depth, x) # 保存 val 对应的节点深度和节点编号for y in g[x]:if y ! fa:dfs(y, x, depth 1)val_depth_id[val] tmp # 恢复现场dfs(0, -1, 0)return ans时间复杂度O(n) 空间复杂度O(n) 解题思路二0 时间复杂度O(n) 空间复杂度O(n) 解题思路三0 时间复杂度O(n) 空间复杂度O(n)
http://www.w-s-a.com/news/87718/

相关文章:

  • 网站开发发展存在的问题交换链接营销的经典案例
  • 烟台高端网站建设公司福田市网站建设推广
  • 做网站如何保证询盘数量智慧城市
  • 大连网站平台研发wordpress更改地址
  • 做标书要不要做网站南昌网站排名优化费用
  • 网站内容如何自动关联新浪微博万网域名信息
  • 网站出售网络推广服务费计入什么科目
  • 宁波咨询网站设计西安网站制作开发
  • 深圳市专注网站建设全网营销网络推广
  • 如何快速建设网站虚拟空间软件
  • 一个虚拟主机可以做几个网站免费软件下载中心
  • 美工培训网站中国建筑网官网手机版
  • 创建网站花钱吗谁能给个网址免费的
  • 宁波教育学会网站建设网站建设价格由什么决定
  • 北京定制网站价格wordpress上传pdf文档
  • 网站建设费税率dz论坛seo设置
  • 推销网站话术商业网站开发与设计
  • 金华网站建设哪个网站做欧洲旅行比较好
  • 东莞市住房和城乡建设局网站trswcm网站建设
  • 郑州做网站企业h5编辑器免费版
  • 加强公司窗口网站建设陕西省外省入陕建筑信息平台
  • 成都网站优化实战大连企业网站建设模板
  • 服务器硬件影响网站速度seo网站推广价格
  • 学院网站开发竞争对手分析买网站送域名
  • 手机网站 jsp个人网页制作成品代码五个页面
  • ppt做长图网站wordpress文章页面图片自动适应
  • 做泌尿科网站价格京东商城网站建设教程
  • 像网站的ppt怎么做的移动app与网站建设的区别
  • 怎么建个人网站网站收录有什么用
  • 广州市医院网站建设广州头条新闻最近一周