每日一题 823. 带因子的二叉树

news2025/1/14 18:33:48

每日一题 823. 带因子的二叉树 难度:中等
在这里插入图片描述
思路:

  1. 取乘积,那么两个叶子节点相乘一定会得到一个更大的数,所以先排序
  2. 以父节点为根节点的数的数量 = 以右节点为根节点的数的数量 * 以左节点为根节点的数的数量
  3. 初始化列表,每个数作为根节点都至少能以它本身构建一棵树,所以每个数的初始对应数量为 1,这里为了快速查找,定义字典来实现
  4. 从小到大遍历排好序的数组,寻找能构成 右子 * 左子 = 当前数 的组合,并更新当前数所对应的组合数
  5. 返回字典中所有值的和

代码如下:

class Solution:
    def numFactoredBinaryTrees(self, arr: List[int]) -> int:
        arr.sort()
        t = {}
        for i in range(len(arr)):
            t[arr[i]] = 1
        for i in range(len(arr)):
            for j in range(0, i):
                if arr[i] % arr[j] == 0 and arr[i]/arr[j] in t:
                    t[arr[i]] = (t[arr[i]] + t[arr[j]] * t[arr[i]/arr[j]]) % (10 ** 9 + 7)
        return sum(t.values()) % (10 ** 9 + 7)

但我不知道为什么下面的代码能更快实现,感觉差不多
学习:快速构建含有初值的字典 r = { x: 1 for x in arr}

class Solution: 
    def numFactoredBinaryTrees(self, arr: List[int]) -> int:
        arr.sort()
        r = { x: 1 for x in arr}
        for x in arr:
            a = sqrt(x)
            if a in r:
                r[x] += r[a] ** 2
            for j in range(bisect.bisect_left(arr, a)):
                if not x % arr[j] and x / arr[j] in r:
                    r[x] += r[arr[j]] * r[x / arr[j]] * 2
        return sum(r.values()) % 1000000007

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/944801.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vscode vue3自定义自动补全

敲代码多了,发现重发动作很多,于是还是定义自动补全代码吧——懒是第一生产力! 1,Ctrl Shift P打开快捷命令行:找到下面这个 2,然后找到ts: 里面给了demo照着写就行 // "Print to conso…

【Qt QAxObject】使用 QAxObject 高效任意读写 Excel 表

1. 用什么操作 Excel 表 Qt 的官网库中是不包含 Microsoft Excel 的操作库,关于对 Microsoft Excel 的操作库可选的有很多,包含基于 Windows 系统本身的 ActiveX、Qt Xlsx、xlsLib、LibXL、qtXLS、BasicExcel、Number Duck。 库.xls.xlsx读写平台Qt Xls…

访问学者择校容易犯哪些错误?

在选择访问学者的学校时,很多人容易犯一些错误,这些错误可能会影响他们的学术和个人发展。下面就让知识人网小编带大家一起来探讨一下,访问学者在选择学校时容易犯的一些错误。 首先,许多访问学者容易陷入排名偏见。他们可能会过于…

什么是数字化工厂呢?为何MES管理系统是工业4.0的核心

随着互联网时代的来临,线上业务逐渐成为企业发展的新趋势。越来越多的企业开始将业务拓展到线上,开展数字化工厂转型。那么,什么是数字化工厂呢?它有哪些特点呢? 数字化工厂,是指以数字化技术,包…

React 的七个值得推荐的动画库

今天,Web 应用程序用户界面有许多吸引用户的元素,为了满足这些需求,开发人员不得不寻找新的方法来实现带有动画和过渡的 UI,因此,开发了专门的库和工具来处理 Web 应用程序中的动画。在本文中,将讨论一些优…

Ansible学习笔记2

Ansible是Python开发的自动化运维工具,集合了众多运维工具(Puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置,批量程序部署、批量运行命令等功能。 特点: 1)部署简单&#xff…

Ceph入门到精通-LVS基础知识

LB集群: (Load Balancing)即负载均衡集群,其目的是为了提高访问的并发量及提升服务器的性能,其 实现方式分为硬件方式和软件方式。 硬件实现方式: 常用的有 F5公司的BIG-IP系列、A10公司的AX系列、Citrix公司的 NetScaler系列…

延迟队列的理解与使用

目录 一、场景引入 二、延迟队列的三种场景 1、TTL对队列进行延迟 2、创建通用延时消息对消息延迟 3、使用rabbitmq的延时队列插件 x-delayed-message使用 父pom文件 pom文件 配置文件 config 生产者 消费者 结果 一、场景引入 我们知道可以通过TTL来对队列进行设…

百数应用中心——生产制造管理解决方案解决行业难题

传统生产制造业面临着许多挑战,其中一些主要问题包括效率低下、交期压力大、需求预测不准确、生产模式复杂、异常响应慢、库存高和计划脱节等。这些问题不仅影响了生产效率和质量,也导致了不必要的成本和客户满意度下降。 生产制造管理应用对于企业的生产…

[已解决] wget命令出现Unable to establish SSL connection.错误

问题 从win11上下载best.ckpt包时 遇到: Unable to establish SSL connection.错误 解决方案: 加上参数: 加上跳过验证证书的参数--no-check-certificate 有些网站不允许通过非浏览器的方式进行下载,使用代理既可以解决问题&am…

MES管理系统中常用的数据模型有哪些

在MES管理系统项目中,数据建模对于生产过程的监控、分析和管理具有至关重要的作用。本文将介绍一些常见的MES管理系统数据建模方面,并阐述它们在生产过程中的重要性和应用。 1、产品数据模型是MES系统中的基础模块之一。它涵盖了产品的基本信息、规格和属…

JavaScript 中的箭头函数:如何使用简洁的语法

了解有关 JavaScript 箭头函数的所有信息。我们将向您展示如何使用 ES6 箭头语法,以及在代码中利用箭头函数时需要注意的一些常见错误。您将看到许多示例来说明它们的工作原理。 JavaScript 箭头函数随着 ECMAScript 2015(也称为 ES6)的发布…

【pyqt5界面化开发-4】垂直布局/水平布局+‘套娃‘布局

目录 一、垂直布局 二、布局器的组合 三、水平布局垂直布局(套娃) 一、垂直布局 需要模块:QVBoxLayout # 垂直布局layout QVBoxLayout()………………# 应用设置的布局器self.setLayout(layout) 模块间的伸缩器(可以理解为弹簧…

InfluxDB在Windows的下载,安装,自启动

1.官网下载 官网下载地址,我一般都喜欢官网下载,包含windows,linux,macos,docker,K8s甚至树莓派系统等。 2.启动 进入到文件夹下,双击启动exe的话会一闪而过,它告诉你要cmd用命令…

uni-app中使用iconfont彩色图标

uni-app中使用iconfont彩色图标 大家好,今天我们来学习一下uni-app中使用iconfont彩色图标,好好看,好好学,超详细的 第一步 首先,从iconfont官网(iconfont-阿里巴巴矢量图标库)选择自己需要的图…

九号公司董事长高禄峰:立足科技创新,助力行业发展

从整个电动两轮车发展时间线来看,尽管九号公司2019年才正式进入局电动两轮车市场,但公司凭借智能化入局,在短短三年时间里,已经成长为智能电动两轮车市场的领军者,在这期间,九号公司既没有多年的市场积累&a…

基于 OV5640 摄像头理论知识讲解-典型工作模式配置

基于OV2640/ OV5640 的图像采集显示系统系列文章目录: (1)基于 OV5640 摄像头理论知识讲解-成像和采样原理 (2)基于 OV5640 摄像头理论知识讲解-数字接口和控制接口 (3)基于 OV5640 摄像头理论知…

单链表oj题

🍟1.反转链表 链接: https://leetcode.cn/problems/reverse-linked-list/description/ 思路一:遍历一遍的同时两两逆置 写法一: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next…

生成式AI背景下编程工作者的技术和高级软考理论的演进融合之路

思考背景 近两次软考,我都参与了,2022年11月参加的是系统架构师的考试,2023年5月参加的是系统分析师的考试,去年参加系统架构是考试是完全的裸考和第一次考,成绩是选择题39,综合题46和论文48分&#xff0c…