leetcode hot100 完全平方数

在这里插入图片描述
本题中,是给一个整数n,让用完全平方数凑出这个整数,注意,题中给了n的范围,是大于等于1的,也就是说,dp[0]我们可以先不考虑。

整个问题可以抽象成完全背包问题的变形形式,物品就是这一个个的完全平方数,也就是i的平方,而背包的容量就是n。我们可以多次使用同一个物品来填充这个背包,直到这个背包被填满。

所以,dp[j]就表示填满容量为j的背包所需要的最少的物品的数目。
那么我们的递推公式应该就是dp[j] = Math.min(dp[j],dp[j-i*i]+1)。
因为我们之前是通过dp[j-coins[i]]+1得到的dp[j],就是表示先凑满容量为j-coins[i]所需要的最少物品个数,而coins[i]就是第i个物品。而在本题中,第i个物品则是i的完全平方数,即i*i。

初始化:dp[0]应该初始化成0,因为题中n的范围是大于等于1的,为了一直能求最小值,我们dp[0]应该初始化成0。之后其他的都应该初始化成整形的最大值,才能防止计算值被覆盖。

因为本题是要求的最少个数,并不是排列数也不是组合数,所以采取什么遍历方式都可以,一般采取先物品,再背包。并且本题是完全背包问题,即物品可以重复使用,所以内层遍历背包的时候应该正序遍历。

打印数组

class Solution {// 版本一,先遍历物品, 再遍历背包public int numSquares(int n) {int max = Integer.MAX_VALUE;int[] dp = new int[n + 1];//初始化for (int j = 0; j <= n; j++) {dp[j] = max;}//如果不想要寫for-loop填充數組的話,也可以用JAVA內建的Arrays.fill()函數。//Arrays.fill(dp, Integer.MAX_VALUE);//当和为0时,组合的个数为0dp[0] = 0;// 遍历物品for (int i = 1; i * i <= n; i++) {// 遍历背包for (int j = i * i; j <= n; j++) {//if (dp[j - i * i] != max) {dp[j] = Math.min(dp[j], dp[j - i * i] + 1);//}//不需要這個if statement,因爲在完全平方數這一題不會有"湊不成"的狀況發生( 一定可以用"1"來組成任何一個n),故comment掉這個if statement。}}return dp[n];}
}

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

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

相关文章

在 React 中使用 i18next支持多语言

基本用法 安装依赖包 npm i i18next react-i18next i18next-browser-languagedetector --savei18next 提供了翻译的基本能力; react-i18next 是 i18next 的一个插件&#xff0c;用来降低 react 的使用成本; i18next-browser-languagedetector 是用来检测浏览器语言的插件。 …

搜维尔科技:OptiTrack探索人类与技术之间关系的开创性表演

另一种蓝色通过 OptiTrack 释放创造力 总部位于荷兰的当代舞蹈团因其探索人类与技术之间关系的开创性表演而受到广泛赞誉。该公司由富有远见的编舞家大卫米登多普创立&#xff0c;不仅利用技术作为探索的主题&#xff0c;而且将其作为表达故事的动态工具。 “我一直对文化与…

【Java面试系列】JDK 1.8 新特性之 Stream API

目录 一、Stream 简介二、Stream 特点&#xff1a;Stream 注意点&#xff1a;1、什么是聚合操作2、Stream 流1、什么是流2、流的构成3、stream 流的两种操作4、惰性求值和及早求值方法5、Stream 流的并行 三、Stream操作的三个步骤1、创建流第一种&#xff1a;通过集合第二种&a…

ping 8.8.8.8和ping www.baidu.com都OK,但是打不开网页

ping 8.8.8.8和ping www.baidu.com都OK&#xff0c;但是打不开网页 打开设置 -> 网络 找到IPV4, DNS栏输入 8.8.8.8 , apply 设置里界面变成这样 然后网页就能加载了

mysql(五) buffer pool(缓存页数据与索引数据)

前面写了很多mysql的实用基础知识、接下来我将总结整理一些进阶和更深的一些知识、你知道的越多、不知道就越多、让我们一起学习。 目录 一、buffer pool的位置&#xff08;Innodb存储引擎内&#xff09; 二、Buffer Pool是什么&#xff1f; 1、降低磁盘访问的机制 2、Buf…

揭秘阿里巴巴商品详情API:电商数据获取新篇章,业务效率飞跃提升

阿里巴巴平台商品详情API接口技术深度解析 一、概览 在阿里巴巴这个庞大的电商生态中&#xff0c;商品详情API接口&#xff08;item_get&#xff09;扮演着至关重要的角色。通过这一接口&#xff0c;开发者可以轻松地获取商品的详细信息&#xff0c;为选品、数据分析、价格监…

【机器学习算法】KNN鸢尾花种类预测案例和特征预处理。全md文档笔记(已分享,附代码)

本系列文章md笔记&#xff08;已分享&#xff09;主要讨论机器学习算法相关知识。机器学习算法文章笔记以算法、案例为驱动的学习&#xff0c;伴随浅显易懂的数学知识&#xff0c;让大家掌握机器学习常见算法原理&#xff0c;应用Scikit-learn实现机器学习算法的应用&#xff0…

Spark 离线开发框架设计与实现

一、背景 随着 Spark 以及其社区的不断发展&#xff0c;Spark 本身技术也在不断成熟&#xff0c;Spark 在技术架构和性能上的优势越来越明显&#xff0c;目前大多数公司在大数据处理中都倾向使用 Spark。Spark 支持多种语言的开发&#xff0c;如 Scala、Java、Sql、Python 等。…

读写锁学习笔记

1、数据结构 读锁是共享模式&#xff0c;写锁是独占模式&#xff0c;两个锁也公用一个AQS 两者共用一个state来表示&#xff0c;state前16位表示读锁&#xff0c;后16位表示写锁 读锁操作 通过向右位移16位&#xff0c;然后进行操作 写锁操作 通过和0000 0000 0000 0000 111…

VR全景在文旅景区方面的应用有哪些?

文旅是一个大消费行业&#xff0c;核心是面对C端客户&#xff0c;因此用户的体验非常重要。在这个基础上文旅景区是希望将风景传播给更多人&#xff0c;因此传播和裂变也是文旅行业所需的&#xff0c;而VR全景技术正好可以满足文旅景区所有的价值要素。 VR全景在文旅景区方面的…

2000-2022年上市银行相关指标数据

2000-2022年上市银行相关指标数据 1、时间&#xff1a;2000-2022年 2、来源&#xff1a;附在文件内&#xff0c;见表格名称 3、指标&#xff1a;证券代码、证券简称、上市日期、上市公司(银行)类型、不良贷款余额、不良贷款拨备覆盖率、不良贷款比率、净利差、净息差、净息差…

el-button 选择与非选择按钮批量处理

el-button 选择与非选择按钮批量处理 <el-button v-for"(voyage,i) in data[voyages][nowVoyage]":key"i"class"c-work-bts"type"primary":plain"nowWorkSpace!i"click"chooseWorkSpace(i)"size"small&qu…

判断一个dll/exe是32位还是64位

通过记事本判断&#xff08;可判断C或者C#&#xff09; 64位、将dll用记事本打开&#xff0c;可以看到一堆乱码&#xff0c;但是找到乱码行的第一个PE&#xff0c;如果后面是d?则为64位 32位、将dll用记事本打开&#xff0c;可以看到一堆乱码&#xff0c;但是找到乱码行的第…

龙讯旷腾PWmat用户福利,DFTB紧束缚法上线!

DFTB介绍 DFTB是基于密度泛函理论的紧束缚方法&#xff08;Density Functional based Tight binding method&#xff09;。其融合了DFT的准确性和紧束缚方法(TB)的高效性&#xff0c;是一种近似DFT的方法。通过使用预先计算的参数、最小基组、仅考虑最近邻相互作用&#xff0c…

Prometheus+influxdb1.8实现高可用监控系统

背景 Prometheus是业内有名的开源监控工具&#xff0c;我所在的公司也是采用PrometheusGrafana方式构建监控系统&#xff0c;并且不只是监控运维层面的数据&#xff0c;业务层面的服务状态也通过Java代码的客户端micrometer向Prometheus提交数据并在Grafana上配置出图&#xf…

day2:信号与槽

思维导图 使用手动连接&#xff0c;将登录框中的取消按钮使用t4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断u界面上输入的账号是否为"123",密码是否为"…

【2024软件测试面试必会技能】allure测试报告(3): allure测试报告的用例描述设置

allure测试报告的用例描述相关方法&#xff1b;如下图 allure标记用例级别severity 在做自动化测试的过程中&#xff0c;测试用例越来越多的时候&#xff0c;如果执行一轮测试发现了几个测试不通过&#xff0c;我们也希望能快速统计出缺陷的等级。 pytest结合allure框架可以对…

二叉搜索树(二叉排序树、二叉查找树)

二叉搜索树&#xff08;二叉排序树、二叉查找树&#xff09; 一、定义二、操作&#xff08;一&#xff09;中序遍历&#xff08;二&#xff09;查找&#xff08;三&#xff09;插入&#xff08;四&#xff09;删除 三、二叉搜索树的应用四、二叉搜索树操作的性能分析五、总结 一…

解锁服务器外联:TinyProxy一键搭建指南

引言 在服务器需要访问外网的情况下&#xff0c;由于网络安全等原因&#xff0c;许多生产服务器限制了对外网的访问。本文介绍如何通过在一台能够访问外网的服务器上部署TinyProxy来实现代理&#xff0c;使得其他服务器可以通过该代理访问外网。 安装 TinyProxy是一个轻量级…

java异常处理设计

异常的继承体系 java 中的异常的超类是 java.lang.Throwable(后文省略为 Throwable), 他有俩自类Exception和Error&#xff0c;Error是由jvm管理&#xff0c;我们不需要考虑。 RuntimeException是Exception的子类。 检查异常&#xff08;Checked Exceptions&#xff09;&#…