【力扣每日一题】2023.8.29 带因子的二叉树
目录
题目:
示例:
分析:
代码:
题目:

示例:

分析:
题目给我们一些元素,让我们用这些元素连接形成特定的二叉树,每种元素可以使用任意次数,形成的二叉树要求每个非叶子节点的值都为左右子树节点的值的乘积。
一个数要等于两个数的乘积,那么那两个数一定会比那一个数更小,所以我们可以从较小的数入手,那么我们首先将数组从小到大进行排序,接着从左到右,从小到大去遍历。
在遍历之前我们先做个预处理,我们用一个map来存住所有元素的值,以元素为键,值全部初始化为1。map每个键值对的含义就是以键为根节点能形参的二叉树有多少个,因为每个元素都可以以自身一个节点为一棵符合标准的二叉树,所以是初始化为1。
初始化完毕就开始遍历,我们需要套两层for循环,第一层去遍历每个根节点,去更新以当前节点为根节点所能形成的二叉树的数量,更新的方法就是第二层for循环去遍历比这个节点的值更小的元素,因为要相乘等于当前元素,那么乘数肯定是比当前元素更小的。
第一层遍历我们设下标为 i ,第二层下标为 j ,我们去寻找 arr[ i ] / arr[ j ] 这个元素在不在我们的map里,如果在,那么我们就把map里键为arr[ i ] 的键值对中的值加上以那两个乘数为根节点能形成的二叉树的数量的乘积,化简一下就是 m[ arr [ i ] ] += m[ arr[ i ] / arr[ j ] ] * m[ arr[ j ] ]。
由于我们是从小到大遍历的,所以我们每次都是会更新比后面的数更小的元素,以此元素为根节点能形参的二叉树,这样就可以得到推导出以后面较大的元素为根节点能形参的二叉树的数量。所以虽然我们没有用到dp数组,但它本质上来说还是属于动态规划。
还有一点要注意的就是题目有说要对结果取余10的九次方加7,所以为了避免数值溢出,我们每次操作都要做一个取余的操作。

代码:
class Solution {
public:int numFactoredBinaryTrees(vector<int>& arr) {int res=arr.size(); //单个节点可以单独为一棵树,初始化为数组长度sort(arr.begin(),arr.end());unordered_map<int,long>m; //用来记录以每个数为根节点的二叉树数目for(int i:arr){m[i]=1;}for(int i=0;i<arr.size();i++){for(int j=0;j<i;j++){//如果发现arr[i]整除arr[j]的数也在数组里,那么可以多组成的二叉树数目等于以arr[j]为根节点的二叉树数目乘上以另一个除数为根节点的二叉树数目.if(arr[i]%arr[j]==0&&m.find(arr[i]/arr[j])!=m.end()){int t=m[arr[i]/arr[j]]*m[arr[j]]%1000000007;m[arr[i]]+=t; //更新以arr[i]为根节点的二叉树数目.res+=t;res%=1000000007;}}}return res;}
};
相关文章:
【力扣每日一题】2023.8.29 带因子的二叉树
目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们一些元素,让我们用这些元素连接形成特定的二叉树,每种元素可以使用任意次数,形成的二叉树要…...
origin导出pdf曲线超出边框
软件版本 软件版本Word2021Origin2021Adobe Acrobat Pro2023 问题描述 Origin导出的emf格式矢量图片,插入到Word中,显示正常,但是在使用Word导出→创建Adobe PDF→创建Adobe PDF导出PDF文件后,图片曲线就会超出边框,…...
由Android10适配到Android12时遇到相关编译失败问题
最近Android系统各大应用商店联合发出公告,处于个人隐私安全考虑,强制APP适配到Android 11及以上版本。下面是其中应用市场的公告(顺带提醒没适配的同学): 适配前的开发环境 名称版本Android studioGiraffe | 2022.3…...
高职教育应对ChatGPT应用的策略
一、完善顶层设计,提升技术水平 在推广ChatGPT平台的过程中,高职院校需要关注技术本身的问题。这就需要在国家和地方政府的引导下,引入更完善的技术顶层设计,提高人工智能在高职教育中的运用水平。具体来说,一方面需要…...
Linux 内核编译参数
文章目录 前言1 -Wall2 -Wundef3 -Wstrict-prototypes4 -Wno-trigraphs5 -fno-strict-aliasing6 -fno-common7 -Werror-implicit-function-declaration8 -Wno-format-security9 -fno-delete-null-pointer-checks10 -stdgnu89 前言 # cat /etc/os-release NAME"CentOS Lin…...
vscode使用anaconda自带的python环境在终端运行时报错
目录 具体报错内容官方翻译报错讲人话解决方法 具体报错内容 CommandNotFoundError: Your shell has not been properly configured to use conda activate. If your shell is Bash or a Bourne variant, enable conda for the current user with$ echo ". E:\Anaconda/e…...
葡萄叶病害识别(图像连续识别和视频识别,Python代码,pyTorch框架)
葡萄叶病害识别(图像连续识别和视频识别,Python代码,pyTorch框架)_哔哩哔哩_bilibili 葡萄数据集 第一个文件夹为 Grape Black Measles(葡萄黑麻疹)病害(3783张) Grape Black rot葡…...
Oracle drop删除表如何恢复
摘要: 在 Oracle 数据库管理中,DROP 命令的误操作可能导致数据不可挽回的丢失。然而,Oracle 提供了回收站(recycle bin)功能,允许用户在删除对象后的一段时间内恢复它们。本文将介绍如何查询、启用和管理回…...
5、监测数据采集物联网应用开发步骤(5.1)
监测数据采集物联网应用开发步骤(4) Sqlite3数据库读写操作开发、异常信息统一处理类开发 本章节需要调用sqlite3及mysql-connector 安装sqlite3 Pip3 install sqlite3 安装mysql-connector pip3 install mysql-connector 验证是否安装成功,python中运行下列…...
ZZULIOJ 1148: 组合三位数之一,Java
ZZULIOJ 1148: 组合三位数之一,Java 题目描述 把1、2、3、4、5、6、7、8、9组合成3个3位数,要求每个数字仅使用一次,使每个3位数均为完全平方数。按从小到大的顺序输出这三个三位数。 输入 无 输出 按从小到大的顺序输出这三个三位数&a…...
ROS功能包目录下CMakeLists.txt
1. add_execuble CMake基础教程(24)add_executable生成目标可执行文件 CMake中add_executable的使用 CMake中的add_executable命令用于使用指定的源文件向项目(project)添加可执行文件,其格式如下: add_executable(<name>…...
Python爬虫追踪新闻事件发展进程及舆论反映
目录 实现方案 1. 确定目标新闻源: 2. 确定关键词: 3. 使用网络爬虫获取新闻内容: 4. 提取和分析新闻文章: 5. 追踪新闻事件的发展进程: 6. 监测舆论反映: 7. 数据可视化: 完整代码示例…...
block层:7. 请求下发
blk_dispatch 源码基于5.10 1. blk_mq_sched_dispatch_requests void blk_mq_sched_dispatch_requests(struct blk_mq_hw_ctx *hctx) {// 队列struct request_queue *q hctx->queue;// 队列已停止或者被暂停if (unlikely(blk_mq_hctx_stopped(hctx) || blk_queue_quiesc…...
Matlab图像处理-平移运算
几何运算 几何运算又称为几何变换,是将一幅图像中的坐标映射到另外一幅图像中的新坐标位置,它不改变图像的像素值,只是改变像素所在的几何位置,使原始图像按照需要产生位置、形状和大小的变化。 图像几何运算的一般定义为&#…...
美创科技一体化智能化公共数据平台数据安全建设实践
公共数据是当今政府数字化转型的关键要素和未来价值释放的核心锚点,也是“网络强国”、“数字中国”的战略性资源。 作为数字化改革先行省份,近年来,浙江省以一体化智能化公共数据平台作为数字化改革的支撑总平台,实现了全省公共数…...
关于单例模式
单例模式的目的: 单例模式的目的和其他的设计模式的目的都是一样的,都是为了降低对象之间的耦合性,增加代码的可复用性,可维护性和可扩展性。 单例模式: 单例模式是一种常用的设计模式,用简单的言语说&am…...
pytest笔记: pytest单元测试框架
第一步:安装 和查看版本 pycharm settings 查看 第二步: 编写test_example.py def inc(x):return x1 def test_answer():assert inc(4) 5 第三步:在当前路径下执行pytest 命令 PS E:\data\web测试\Selenium3自动化测试实战——基于Pyth…...
vulnhub Seattle-0.0.3
环境:vuluhub Seattle-0.0.3 1.catelogue处任意文件下载(目录穿越) http://192.168.85.139/download.php?item../../../../../../etc/passwd 有个admin目录,可以下载里面的文件进行读取 2.cltohes详情页面处(参数prod)存在sql报错注入 http://192.16…...
MYSQL 添加行号将行号写入到主键的列
MYSQL 添加行号 SELECT rownum: rownum 1 AS rownum, a.* FROM(SELECT rownum : 0) t,is_afxt.hk_vehicle a--或者(假设CREATED_TIME日期列数据不重复) select (select count(1)1 from is_afxt.hk_vehicle b where b.CREATED_TIME < a.CREATED_TIME) rownum ,a.* from i…...
前端命令npm 、 cnpm、 pnpm、yarn 、 npx、nvm的区别
大名鼎鼎的npm(Node Package Manager)是随同NodeJS一起安装的包管理工具,NPM本身也是Node.js的一个模块。 npm的含义有两层: npm服务器,npm服务器网址为https://www.npmjs.org,npm是 Node 包的标准发布平台,用于 Node 包的发布、…...
掌握6个采购管控节点,企业采购成本可直接降低15%—30%
在企业经营管理中,采购成本是企业综合成本的核心组成部分,原材料、耗材、设备、服务等采购支出,直接决定企业利润空间。据行业数据统计,多数中小企业采购环节存在流程漏洞、管控松散、资源浪费等问题,无效成本占比高达…...
资源管理器约束设计:从核心原理到YARN/K8s实战配置
1. 项目概述:理解资源管理器约束的核心价值在任何一个复杂的计算或资源管理系统中,资源管理器(Resource Manager, 简称RM)都扮演着“交通警察”或“调度中心”的角色。它的核心职责是公平、高效地分配有限的系统资源&a…...
智能健身器材核心技术解析:从光学编码器到电机驱动的安华高方案
1. 项目概述:当健身器材遇上“芯”动力如果你拆开一台近两年新出的智能动感单车、划船机或者高端跑步机,大概率会在其控制主板的核心位置,发现一枚印着“Avago”或“Broadcom”标志的芯片。这不是偶然。安华高科技(Avago Technolo…...
LetsFG:基于Function与Group的去中心化协作平台设计与实战
1. 项目概述:一个面向未来的开源协作平台最近在开源社区里,一个名为“LetsFG/LetsFG”的项目引起了我的注意。乍一看这个标题,可能会觉得有些抽象,但当你深入其代码仓库和设计理念后,会发现它指向了一个非常具体且极具…...
白细胞介素-17(IL-17):炎症与免疫调节中的关键细胞因子
白细胞介素-17(Interleukin-17, IL-17)作为IL-17细胞因子家族中的核心成员,在免疫应答、炎症反应及宿主防御中扮演着举足轻重的角色。自其被发现以来,IL-17在免疫学、炎症性疾病及肿瘤生物学等领域的研究中持续引发关注。本文旨在…...
终极Windows热键冲突解决方案:Hotkey Detective一键定位占用程序
终极Windows热键冲突解决方案:Hotkey Detective一键定位占用程序 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective …...
Diablo Edit2:暗黑破坏神2角色存档编辑器的终极指南
Diablo Edit2:暗黑破坏神2角色存档编辑器的终极指南 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否曾经在暗黑破坏神2中花费数小时刷装备却一无所获?是否因为技能点…...
如何使用AI大模型进行报表合并?一句话搞定复制粘贴
每个月底,财务小张都要做一件事:把1月到12月的销售明细表合成年报。12个Excel文件,每个文件30多列,字段名倒是一致,但数据量加起来几十万行。她的老办法是打开所有文件,逐个复制粘贴到一个新表里࿰…...
通过审计日志追溯APIKey使用情况保障安全
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过审计日志追溯APIKey使用情况保障安全 效果展示类,从安全管理角度出发,说明如何在Taotoken控制台查看AP…...
为什么92%的开发者首次调用PlayAI翻译API会触发token溢出?3步诊断清单+4类典型错误码速查表
更多请点击: https://intelliparadigm.com 第一章:PlayAI多语种同步翻译功能详解 PlayAI 的多语种同步翻译功能基于端到端神经机器翻译(NMT)架构,支持实时语音流输入与毫秒级文本输出,覆盖中、英、日、韩…...
