python输出完全平方数_LeetCode 279*. 完全平方数(Python)
给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。
示例 1:
输入: n = 12
输出: 3
解释: 12 = 4 + 4 + 4.
示例 2:
输入: n = 13
输出: 2
解释: 13 = 4 + 9.
思路:构建一个图,再进行广度优先遍历(BFS),注意三个要点
1. 使用队列
2. 用数组表示图的节点[ num, step],num表示当前数字是什么,step表示经过几步可到达该节点
3. 用一个数组记录已经访问过的节点,避免在队列中插入同样的值
例如:n = 9时,先向队列中存入[9, 0],再存入[8, 1],再存入[5, 1],再存入[0, 3],......,最后得结果为3
借用一张bobobo老师的图
class Solution:
def numSquares(self, n: int) -> int:
# 图的广度优先遍历
import queue
q = queue.Queue()
q.put([n, 0]) # 队列存储数字,第一个数为当前数字,第二个数为走过的步数
visited = [0 for _ in range(n + 1)] # 记录0到n哪个数字被访问过
visited[n] = 1
while not q.empty():
temp = q.get()
num = temp[0]
step = temp[1]
if num == 0:
return step
i = 1
while True:
a = num - i * i
if a < 0:
break
if visited[a] == 0:
q.put([a , step + 1])
visited[a] = 1
i = i + 1
本文同步分享在 博客“小王曾是少年”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
python输出完全平方数_LeetCode 279*. 完全平方数(Python)相关推荐
- python输出列表元素_在Python中分别打印列表中的每一个元素方法
在Python中分别打印列表中的每一个元素方法 更新时间:2018年11月07日 15:12:03 作者:wintersshi 今天小编就为大家分享一篇在Python中分别打印列表中的每一个元素方法, ...
- python输出玫瑰花_如何用python画玫瑰花
源码如下:import turtle # 设置初始位置 turtle.penup() turtle.left(90) turtle.fd(200) turtle.pendown() turtle.ri ...
- python 输出文件分隔符_使用Python文件读写,自定义分隔符的方法
使用Python文件读写,自定义分隔符的方法 发布时间:2020-07-06 11:07:56 来源:亿速云 阅读:121 作者:清晨 小编给大家分享一下使用Python文件读写,自定义分隔符的方法, ...
- python输出数据到excel-使用python将大量数据导出到Excel中的小技巧分享
(1) 问题描述:为了更好地展示数据,Excel格式的数据文件往往比文本文件更具有优势,但是具体到python中,该如何导出数据到Excel呢?如果碰到需要导出大量数据又该如何操作呢? 本文主要解决以 ...
- python输出布尔值true_关于python中bool类型的重要细节
原标题:关于python中bool类型的重要细节 0. 导读 大家好,欢迎来到 Crossin的编程教室 ! 布尔类型是Python中必不可少的一种数据类型.它看起来很简单,仅包括True和False ...
- python输出的格式_将Python输出格式化为行
所以,我对编程还是有点陌生,我正在尝试用Python格式化一些数组的输出.我发现很难在格式化的某些方面绞尽脑汁. 我有几个数组要以表的格式打印.在headings = ["Name" ...
- python输出偶数_如何用python判断奇偶数
问题分析:用Python编写一个程序,判断输入的数字是奇数还是偶数,并相应的输出信息,要判断一个数为奇数还是偶数,依据的是它被2除后的余数.因此可以用"%"运算符来计算并判断. 代 ...
- python实现平衡二叉树_LeetCode 110. 平衡二叉树 | Python
# 110. 平衡二叉树 --- 题目来源:力扣(LeetCode)[https://leetcode-cn.com/problems/balanced-binary-tree](https://le ...
- python输出质数序列_用python打印素数序列
您需要检查从2到n-1(实际上是sqrt(n))的所有数字,但是好的,让它为n). 如果n可被任何数字整除,则它不是素数.如果一个数字是素数,就打印出来.for num in range(2,101) ...
最新文章
- Java基础学习总结(1)——equals方法
- python pandas写入数据后保存_python读取MySQL数据使用pandas写入到csv,并保存列名
- 浮点类型和布尔类型(Java)
- 张钹院士:可解释、可理解是人工智能研究的主攻方向 | CCF-GAIR 2018
- java web面试题大全_Java经典面试题之Java web开发汇总(附答案)
- armbian nginx 部署博客_从零开始搭建服务器之更加优雅地部署项目
- Java 基本功之(二)Java 面向对象
- [kubernetes] 解决k8s.gcr.io Image 导入导出 等问题
- SimpleDateFormat解析的时候字符串过长问题
- 通过curl获取网页访问时间
- mysql降序后去重_Mysql 数据记录去重后按字段排序
- 把杀某程序封装成sh
- clipboard.js在弹出框中无法复制的问题
- 五步整理你的css文件
- 《Yii2 By Example》第2章:创建一个简单的新闻阅读器
- 【算法设计与分析】01 算法涉及的研究内容概述
- html页面常见布局
- showtext matlab,使用MATLAB 2019 App Design 工具设计一个 电子日记App
- Splay 总结基础精华
- CLI、CLR、CTS、CLS
热门文章
- Android传感器之光线传感器介绍
- java 实现站内信_群发站内信实现
- 平台交叉打包 GYP
- pythonista模板_Python——Code Like a Pythonista: Idiomatic Python
- android然后让list刷新到底部,Android笔记之:App列表之下拉刷新的使用
- 电脑 蓝屏报错:SYSTMEM SCAN AT RAISED IRQL CAUGHT IMPROPER DRIVER UNLOAD
- IE代理服务器没有响应 浏览器无法打开网页解决方法(浏览器无法打开网页但是可以使用其他软件)
- MERGE JOIN CARTESIAN
- mixpanel实验教程(1) 支持
- qcom 音频相关的dsp driver笔记(基于msm8996平台)