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

Leetcode 3544. Subtree Inversion Sum

  • Leetcode 3544. Subtree Inversion Sum
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3544. Subtree Inversion Sum

1. 解题思路

这一题我的思路上就是一个动态规划的思路,因为原则上我们只需要遍历一下所有的状态即可,但是这样显然时间复杂度过高,因此我们采用一个动态规划的思路用空间换时间,即可完成上述题目的解答。

具体到实现上也是比较简单,首先就是利用边的内容获取一下整的这个树的结构。

然后我们就是一个遍历,遍历的时候需要记录一下每一个节点当前的正负相位,是否可以相位反转以及如果不可以反转的话,还需要多少深度才能够进行相位反转。

2. 代码实现

给出python代码实现如下:

class Solution:def subtreeInversionSum(self, edges: List[List[int]], nums: List[int], k: int) -> int:def get_graph(edges):graph = defaultdict(list)for u, v in edges:graph[u].append(v)graph[v].append(u)new_graph = defaultdict(list)def _dfs(u, p):for v in graph[u]:if v == p:continuenew_graph[u].append(v)_dfs(v, u)return _dfs(0, -1)return new_graphgraph = get_graph(edges)@lru_cache(None)def dfs(u, flag, d):if d == 0 or d >= k:ans = flag * nums[u]for v in graph[u]:ans += dfs(v, flag, 0)rev = - (flag * nums[u])for v in graph[u]:rev += dfs(v, -flag, 1)return max(ans, rev)else:ans = flag * nums[u]for v in graph[u]:ans += dfs(v, flag, d+1)return ansreturn dfs(0, 1, 0)

提交代码评测得到:耗时6642ms,占用内存774.9MB。

http://www.xdnf.cn/news/5974.html

相关文章:

  • 深入学习 Java 泛型实现方式:擦除法!
  • 43、Server.UrlEncode、HttpUtility.UrlDecode的区别?
  • 物理:篮球为什么能被拍起来?
  • .Net HttpClient 使用Json数据
  • Centos7安装部署wordpress个人博客保姆级教程
  • iVX 研发基座:大型系统开发的协作与安全架构实践
  • 基于MATLAB的生物量数据拟合模型研究
  • 云蝠智能大模型呼叫优势:技术驱动全链路升级,重塑智能交互服务新体验
  • 前端性能优化3:深入分析 Web Worker 和 Service Worker
  • 【源码+文档+调试讲解】驾校报名小程序2
  • python打卡day24
  • ppy/osu构建
  • window 显示驱动开发-创建分配时指定段
  • 块设备代码分析
  • 测试集群的功能-执行wordcount程序
  • uniapp|实现获取手机摄像头权限,调用相机拍照实现人脸识别相似度对比,拍照保存至相册,多端兼容(APP/微信小程序)
  • 什么情况会导致JVM退出?
  • 【机器学习赋能的智能光子学器件系统研究与应用】
  • 界面组件DevExpress WPF中文教程:Grid - 如何自定义Band Header外观?
  • 《内网渗透测试:绕过最新防火墙策略》
  • ZYNQ实战:可编程差分晶振Si570的配置与应用指南
  • 人工智能基础知识笔记九:模型评估的指标
  • OpenAI官方指南,详细解释了何时使用哪种AI模型
  • amd架构主机构建arm架构kkfileview
  • vue3学习——侦听器
  • 从零开始掌握FreeRTOS——目录
  • Java后端快速生成验证码
  • Python查询ES错误ApiError(406, ‘Content-Type ...is not supported
  • vr视频制作攻略(VR视频制作基础知识)
  • 漏桶算法的实际应用案例:数据库批量写入流量控制