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

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 个完全平方数组成。

相关文章:

LeetCode:279.完全平方数

class Solution:def numSquares(self, n: int) -> int:dp[i for i in range(n1)]for i in range(2,n1):for j in range(1,int(i**(0.5))1):dp[i]min(dp[i],dp[i-j*j]1)return dp[-1]代码解释 初始化 DP 数组: dp [i for i in range(n1)] 这里,dp[i]…...

Python面试宝典:Python中与ORM技术(对象关系映射)相关的面试笔试题(1000加面试笔试题助你轻松捕获大厂Offer)

Python面试宝典:1000加python面试题助你轻松捕获大厂Offer【第二部分:Python高级特性:第十五章:数据库编程:第二节:ORM技术】 第十五章:数据库编程第二节:ORM技术SQLAlchemyDjango ORMORM技术的优势和劣势python中与ORM技术相关的面试笔试题面试题1面试题2面试题3面试题…...

VUE3+TS+elementplus创建table,纯前端的table

一、前言 开始学习前端,直接从VUE3开始,从简单的创建表格开始。因为自己不是专业的程序员,编程主要是为了辅助自己的工作,提高工作效率,VUE的基础知识并不牢固,主要是为了快速上手,能够做出一些…...

UE驻网失败问题(二)

另一个UE注册失败的问题,具体过程如下: 问题现象如上,UE在这个N48上的小区一直在重复上述过程,收到RRC Setup后就不发RRC Setupcomplete,闭上眼睛也知道大概率是这个RRC Setup的配置有问题。 在问题时间点周围查看&…...

【MySQL】第三周作业

【MySQL】第三周作业 1、在数据库example下创建college表。2、在student表上创建视图college_view。3、查看视图college_view的详细结构4、 更新视图。5 、修改视图,6 、删除视图college_view 1、在数据库example下创建college表。 College表内容如下所示 字段名 …...

香橙派 Kunpeng Pro使用教程:从零开始打造个人私密博客

一、引言 在这个日益互联的世界中,单板计算机已经成为创新和个性化解决方案的重要载体。而在单板计算机领域,香橙派 Kunpeng Pro凭借其强大的性能和灵活的应用潜力,正逐渐吸引着全球开发者和技术爱好者的目光。 作为一款集成了华为的鲲鹏处…...

深入探索:中文字符的编码与转移字符的奥秘

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:探索字符编码的世界 二、字符编码基础:理解ASCII与Unicode…...

Ubuntu中 petalinux 安装 移植linux --tftp/tftp-hpa服务的方法

Xilinx 文档 PetaLinux 指南:如何创建 PetaLinux 环境 (2019.1) PetaLinux工具参考指南 PetaLinux安装详解(Xilinx , linux, zynq, zynqMP) petalinux 2020.1安装教程 一、PetaLinux工具和库安装 PetaLinux 工具要求主机系统 /bin/sh 为“b…...

JVM(内存区域划分、类加载机制、垃圾回收机制)

目录 一. 内存区域划分 1.本地方法栈(Native Method Stacks) 2.虚拟机栈(JVM Stacks) 3.程序计数器(Program Counter Register) 4.堆(Heap) 5.元数据区(Metaspace) 二.类加载机制 1.加载 2.验证 3.准备 4.解析 5.初始化 "双亲委派模型" 三. GC 垃圾回收…...

C语言---基础内容(万字)

C 语言是一种通用的、面向过程式的计算机程序设计语言。1972 年,为了移植与开发 UNIX 操作系统,丹尼斯里奇在贝尔电话实验室设计开发了 C 语言。 C 语言是一种广泛使用的计算机语言,它与 Java 编程语言一样普及,二者在现代软件程…...

c语言从入门到函数速成(完结篇)

哈喽,小伙伴们大家好呀,本篇文章是这个系列的完结篇,希望大家看完后能有所收获哦 首先能看到这里的同学,一定也是自觉性比较强的了,我会在文章末尾给大家发点小福利 那么,我们先来通过数学中的函数来引入一…...

关于linux磁盘告警问题

案例:我们在执行df命令时,查看到磁盘利用率很高,但是到相对应的目录执行du -sh *来找大文件时进行删除时,发现各个目录相加并不大,如下图: 使用df命令查看到根(/)目录使用到33G,而du命令显示只使…...

冯喜运:5.27黄金暴跌大阴后出现“暂定符”今日黄金原油操作策略

【黄金消息面分析】:金价虽然有大阴线暴跌,但依然属于超买后的调整而非熊市,对中长线投资者来说只是市场洗牌。因此,在出现企稳迹象之后,随时关注反弹时机的启动。未来几日,黄金空头可能在进一步发力之前需…...

前端JS必用工具【js-tool-big-box】学习,获取全球重点城市时间

我们去住一些旅馆的时候,或者一些国际性网站,经常可以看见他们的钟表会展示一些国家地区的时间,这个就是很常用的功能。但如果不常接触这个功能的开发网站呢,大家就看自己电脑右下角的时间展示,就是自己当前的具体时间…...

BioTech - 将蛋白质的 PDB 格式文件 转换成 mmCIF 格式文件 (Python)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/139234247 蛋白质的三维结构信息通常可以通过两种格式的文件来获取:PDB (Protein Data Bank) 和 mmCIF (Macromolecular Crystallographic Information File…...

【编程题-错题集】奇数位丢弃(模拟 - 规律)

牛客对应题目链接&#xff1a;奇数位丢弃_牛客题霸_牛客网 (nowcoder.com) 一、分析题目 通过⼀两个例子的模拟&#xff0c;可以发现&#xff1a;每次起始删除的下标都是 2 的次方。根据这个规律&#xff0c;找到最后⼀次删除的起始位置的下标即可。 二、代码 #include <io…...

Docker安装MongoDB(Linux版)

文章目录 前言一、Docker环境的准备1.安装依赖2.安装Docker 二、使用Docker安装MongoDB1.mongo版本选取2.拉取合适的镜像3.宿主机创建MongoDB需要挂载的文件夹4.第一次无认证创建mongo用户5.启动需要认证的mongo容器 问题汇总总结 前言 本文章主要介绍在Centos系统&#xff0c…...

【设计模式】JAVA Design Patterns——Commander(指挥官模式)

&#x1f50d;目的 用于处理执行分布式事务时可能遇到的所有问题。 &#x1f50d;解释 处理分布式事务很棘手&#xff0c;但如果我们不仔细处理&#xff0c;可能会带来不想要的后果。假设我们有一个电子商务网站&#xff0c;它有一个支付微服务和一个运输微服务。如果当前运输…...

解决vue3项目vite打包忽略.vue扩展名

项目打包时报could not relolve “...”&#xff0c;因为vite已不再默认忽略.vue扩展名。 解决方法如下&#xff1a; 在vite.config.js中配置vite使其忽略 .vue 扩展名&#xff08;不建议忽略&#xff09; 注意&#xff1a;即使忽略了.vue文件&#xff0c;在实际写的时候也要加…...

Vue基础(数据绑定、export使用)

1、简介 在使用vue开发的过程中&#xff0c;经常会遇到一些容易混淆的问题&#xff0c;因此&#xff0c;在本文中进行汇总操作&#xff0c;只有通过不断总结学习&#xff0c;才能更好掌握vue的使用&#xff08;每天进步一点&#xff09;。 2、数据绑定 在js中定义数据&#xf…...

计算机毕业设计:Python城市交通出行模式挖掘系统 Django框架 可视化 数据分析 PyEcharts 交通 深度学习(建议收藏)✅

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ > &#x1f345;想要获取完整文章或者源码&#xff0c;或者代做&#xff0c;拉到文章底部即可与…...

游戏开发中的“场”魔法:用梯度、散度模拟水流、烟雾与热量扩散

游戏开发中的“场”魔法&#xff1a;用梯度、散度模拟水流、烟雾与热量扩散 在《塞尔达传说&#xff1a;王国之泪》中&#xff0c;林克挥动魔法杖时涌动的岩浆、随风飘散的蒲公英&#xff0c;或是《艾尔登法环》里腐败湖面蒸腾的毒雾——这些令人屏息的动态效果背后&#xff0c…...

#星光计划4.0#鸿蒙界面设计技术解析与实战案例

鸿蒙界面设计技术解析与实战案例 随着万物互联时代的到来&#xff0c;鸿蒙操作系统&#xff08;HarmonyOS&#xff09;以“全场景智慧体验”为核心&#xff0c;构建了一套独特的界面设计体系。不同于传统单设备操作系统的界面逻辑&#xff0c;鸿蒙界面设计围绕“分布式协同、原…...

Android Init 系列专题【篇二:Selinux启动流程】

Android Init 系列专题【总篇&#xff1a;深入浅出】https://blog.csdn.net/qq_27672101/article/details/144153376 Android Init 系列专题【篇一&#xff1a;fstab分区表挂载】https://blog.csdn.net/qq_27672101/article/details/146104979 Android Init 系列专题【篇二&a…...

(技术解析)TabDDPM:如何用扩散模型攻克表格数据生成的异构性难题?

1. 扩散模型为何成为生成建模的新宠&#xff1f; 我第一次接触扩散模型是在2021年&#xff0c;当时正在为一个医疗数据分析项目寻找更好的数据增强方案。传统GAN生成的血压、血糖等生理指标数据总会出现数值断层&#xff0c;而VAE生成的年龄分布又常常偏离真实情况。直到尝试了…...

从成本到实践:基于uniCloud与七牛云扩展存储的uniapp项目降本增效全攻略

1. 为什么选择uniCloud扩展存储&#xff1f;省钱的底层逻辑 做uniapp项目最头疼的就是用户上传的图片、视频这些文件怎么存。去年我接手一个社区类小程序&#xff0c;用户每天上传的图片超过5万张&#xff0c;用传统云存储一个月光流量费就烧掉8000多块。后来换成uniCloud七牛…...

FreeRTOS在STM32上的内存管理:如何避免堆溢出和优化内存使用

FreeRTOS在STM32上的内存管理实战&#xff1a;从堆溢出防御到高效优化策略 在嵌入式开发中&#xff0c;内存管理往往是决定系统稳定性的关键因素。对于使用FreeRTOS的STM32开发者而言&#xff0c;如何合理配置内存、预防堆溢出以及优化内存使用&#xff0c;直接关系到产品的可…...

Mac环境OpenClaw深度配置:Qwen3-14B镜像多模型切换技巧

Mac环境OpenClaw深度配置&#xff1a;Qwen3-14B镜像多模型切换技巧 1. 为什么需要多模型切换&#xff1f; 去年冬天&#xff0c;当我第一次尝试用OpenClaw自动化处理团队周报时&#xff0c;遇到了一个典型问题&#xff1a;同样的模型配置在处理"数据分析"和"文…...

构建包容性界面:Vant Weapp无障碍设计全流程解析

构建包容性界面&#xff1a;Vant Weapp无障碍设计全流程解析 【免费下载链接】vant-weapp 轻量、可靠的小程序 UI 组件库 项目地址: https://gitcode.com/gh_mirrors/va/vant-weapp 一、设计理念&#xff1a;无障碍设计的核心价值 无障碍设计不是可选功能&#xff0c;而…...

无需安装插件,用快马平台5分钟构建你的第一个ai生成web应用原型

最近在尝试快速验证一些产品想法时&#xff0c;发现了一个特别实用的方法&#xff1a;用InsCode(快马)平台5分钟就能搭建出可交互的Web应用原型。相比传统开发方式&#xff0c;这种无需安装任何插件、直接在浏览器里完成所有操作的方式&#xff0c;真的能节省大量时间。 为什么…...