LeetCode:279.完全平方数

在这里插入图片描述

class Solution:def numSquares(self, n: int) -> int:dp=[i for i in range(n+1)]for i in range(2,n+1):for j in range(1,int(i**(0.5))+1):dp[i]=min(dp[i],dp[i-j*j]+1)return dp[-1]

代码解释

  1. 初始化 DP 数组
    dp = [i for i in range(n+1)]
    这里,dp[i] 表示数字 i 可以由多少个完全平方数组成。初始时,假设每个数字都由它本身一个完全平方数组成,即 dp[i] = i
  2. 动态规划
    外层循环遍历从 2 到 n 的所有数字 i
    内层循环遍历从 1 到 sqrt(i) 的所有整数 j。这里 j 是可能的完全平方数的平方根。
    对于每个 ij,我们尝试将 i 分解为 j*ji-j*j 两部分。如果 i-j*j 仍然是非负的,那么 dp[i] 可以更新为 dp[i-j*j] + 1(即 i-j*j 所需的完全平方数加上当前的 j*j)。
    但是,我们要确保 dp[i] 始终是最小的值,因此我们使用 min(dp[i], dp[i-j*j]+1) 来更新它。
  3. 返回结果
    最后,dp[-1] 就是 n 可以由的最少完全平方数之和,因为 dp 数组的下标是从 0 到 n 的。

举例

假设 n = 12

初始时,dp 数组为:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

开始动态规划:

  • i = 2j 可以是 1,因为 2 = 1*1 + 1*1(但这里我们只使用一个平方数),所以 dp[2] = 1
  • i = 3j 只能是 1,因为 3 = 1*1 + 2,但 2 不是一个完全平方数,所以 dp[3] 保持为 3
  • i = 4j 可以是 1 或 2,因为 4 = 1*1 + 34 = 2*2,后者更优,所以 dp[4] = 1
  • i = 12,我们考虑所有可能的 j 值,并找到最佳组合。最终,12 = 4 + 4 + 4(或 12 = 1 + 3 + 8 等,但 4+4+4 是最少的),所以 dp[12] = 3

最终,dp[-1](即 dp[12])为 3,表示 12 可以由 3 个完全平方数组成。

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

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

相关文章

【云原生】Kubernetes-----POD资源限制与探针机制

目录 引言 一、资源限制 (一)基本定义 (二)资源单位 1.CPU资源 2.内存资源 (三)请求与限制 (四)定义方式 1.编写yaml文件 2.查看资源情况 (五)资源…

构建智能化商场存包柜平台的数据结构设计

随着城市生活节奏的加快,人们对于便利的需求也越来越迫切。在城市中,商场存包柜平台成为了解决人们日常出行中行李存放问题的重要设施。为了更好地管理和运营这些存包柜,智能化商场存包柜平台的数据结构设计显得尤为关键。 一、需求分析与功能…

迷你手持小风扇哪个牌子质量好又实惠?这五款不踩雷推荐!

每年夏天,迷你手持小风扇作为消暑神器都会成为市场上的热销产品。然而,由于选购经验有限,许多消费者在面对众多品牌和型号时,往往难以判断哪个牌子的迷你小风扇既质量好又价格实惠。在追求性价比的同时,我们也不应忽视…

比例溢流阀的放大器找BEUEC

液压比例放大器的使用范围广泛,包括工业生产线、船舶液压系统等多个领域。BEUEC比例放大器是一种重要的液压系统组件,其作用是将微弱的液压信号放大,以实现对液压系统的精确控制。这种设备在多个行业中都有广泛的应用,特别是在需要…

Jenkins安装 :Aws EC2下Docker镜像安装

1 安装docker # 安装docker $ sudo yum install -y docker# 启动docker daemon $ sudo systemctl start docker# 用户加入docker组 $ sudo usermod -aG docker username 2 docker安装jenkins $ docker pull jenkins/jenkins:lts# 安装成功 $ docker images REPOSITORY …

[Algorihm][简单多状态DP问题][买卖股票的最佳时机含冷冻期][买卖股票的最佳时机含手续费]详细讲解

目录 1.买卖股票的最佳时机含冷冻期1.题目链接买卖股票的最佳时机含冷冻期2.算法原理详解3.代码实现 2.买卖股票的最佳时机含手续费1.题目链接2.算法原理详解3.代码实现 1.买卖股票的最佳时机含冷冻期 1.题目链接 买卖股票的最佳时机含冷冻期 2.算法原理详解 思路&#xff…

2024年上半年软件设计师试题及答案(回忆版)

目录 基础知识选择题案例题1.缺陷识别的数据流图2.球队、球员、比赛记录的数据库题3.用户、老师、学生、课程用例图4.算法题5.程序设计题 基础知识选择题 树的节点,度为4的有4个,度为3的有8个,度为2个有6个,度为1的有10个&#x…

深入解析内置模块OS:让你的Python代码更懂操作系统

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、OS模块简介与基础应用 二、文件与目录操作详解 三、OS模块的高级应用:双色…

Kubectl 的使用——k8s陈述式资源管理

一、kebuctl简介: kubectl 是官方的CLI命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为 apiserver 能识别的信息,进而实现管理 k8s 各种资源的一种有效途径。 对资源的增、删、查操作比较方便&…

基础IO用户缓冲区 、inode、硬软链接【Linux】

文章目录 用户缓冲区磁盘磁盘分区EXT2文件系统的存储方案 inode软链接硬链接 用户缓冲区 代码一&#xff1a; 1 #include<stdio.h>2 #include<unistd.h>3 #include<string.h> 4 int main()5 {6 const char * fstr &…

孜然多程序授权系统V2.0开源

源码介绍 孜然一款多程序授权系统&#xff0c;支持自定义权限价格/新增程序配置等支持自动生成授权代码在线签到在线充值多支付接口IP/域名云黑文章系统&#xff08;富文本编辑器&#xff09;卡密功能一键云黑&#xff08;挂个大马/一键黑页/一键删库/一键删源码&#xff09; …

ROS2入门21讲__第07讲__节点:机器人的工作细胞

目录 前言 通信模型 案例一&#xff1a;Hello World节点&#xff08;面向过程&#xff09; 运行效果 代码解析 创建节点流程 案例二&#xff1a;Hello World节点&#xff08;面向对象&#xff09; 运行效果 代码解析 创建节点流程 案例三&#xff1a;物体识别节点 …

民国漫画杂志《时代漫画》第24期.PDF

时代漫画24.PDF: https://url03.ctfile.com/f/1779803-1248635000-177187?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

GMSL2硬件设计V1.1

一、说明 GMSL(Gigabit Multimedia Serial Links),中文名称为千兆多媒体串行链路,是Maxim公司(现属于ADI)推出的一种高速串行接口,通过同轴电缆或屏蔽双绞线(STP)传输高速串行数据,用于汽车摄像头和显示器应用。GMSL2就是指ADI专有的第二代千兆多媒体串行链路技术,传输…

C++的哈希 哈希表 哈希桶

目录 Unordered系列关联式容器 什么是哈希 哈希表 闭散列 载荷因子α 扩容 查找 删除 字符串哈希算法 最终代码 开散列 插入 查找 删除 最终代码 完整代码 Unordered系列关联式容器 C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0…

【数据结构】排序算法大全(快速、堆、归并、插入、折半、希尔、冒泡、计数、基数)各算法比较、解析+完整代码

文章目录 八、排序1.插入排序1.1 直接插入排序1.2 折半插入排序1.3 希尔排序 2.交换排序2.1 冒泡排序2.2 快速排序 3.选择排序3.1 简单选择排序3.2 堆3.2.1 堆排序3.2.2 堆插入删除*完善代码 堆 4.归并、基数、计数排序4.1 归并排序4.2 基数排序4.3 计数排序 5.内部排序算法的比…

基于遗传优化的Sugeno型模糊控制器设计matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于遗传优化的Sugeno型模糊控制器设计matlab仿真,通过遗传优化算法优化模糊控制器的隶属函数参数&#xff0c;从而获得较优的控制效果。 2.系统仿真结果 3.核心程序与模型 …

如何将前端项目打包并部署到不同服务器环境

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学&#xff0c;可以点心心支持一下哈&#xff08;笔记是根据b站尚硅谷的前端讲师【张天禹老师】整理的&#xff0c;用于自己复盘&#xff0c;有需要学习的可以去b站学习原版视频&…

新书推荐:7.3 for语句

本节必须掌握的知识点&#xff1a; 示例二十四 代码分析 汇编解析 7.3.1 示例二十四 ■for语句语法形式&#xff1a; for(表达式1;表达式2;表达式3) { 语句块; } ●语法解析&#xff1a; 第一步&#xff1a;执行表达式1&#xff0c;表达式1初始化循环变量&#xff1b; …

基于PHP的物业管理的设计与实现

第1章 绪论... 1 1.1 研究背景与意义... 1 1.2 国内外发展现状... 2 第2章 关键技术介绍... 3 2.1 PHP语言... 3 2.2 MySQL数据库... 3 2.3 Zend框架... 4 2.4 B/S架构... 4 第3章 系统需求分析... 5 3.1 可行性分析... 5 3.1.1 技术可行性分析... 5 3.1.2 经济可行…