总第63篇/程序员小吴

LeetCode上第 279 号问题:Perfect Squares

题目描述

给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。

示例 1:

输入: n = 12    
输出: 3    
解释: 12 = 4 + 4 + 4

示例 2:

输入: n = 13     
输出: 2     
解释: 13 = 4 + 9

思路解析

使用广度优先搜索方法,将 n 依次减去比 n 小的所有平方数,直至 n = 0 ,此时的层数即为最后的结果。

动画演示

动画演示 Made by 王琛

参考代码

 1/// @五分钟学算法
2class Solution(object):
3    def numSquares(self, n):
4        Q = collections.deque([n])
5        visited, level = set(), 0
6        while Q:
7            # 按层处理
8            for i in range(len(Q)):
9                n = Q.popleft()
10                # 若n==0,则返回当前层数
11                if n == 0return level
12                # 依次减去所有比n小的平方数
13                for i in range(1,int(n**0.5)+1):
14                    val = n - i**2
15                    if val in visited: continue
16                    Q.append(val)
17                    visited.add(val)
18            level = level + 1

代码截图



掏空小吴

 / 今日问题 / 


©著作权归作者所有:来自51CTO博客作者mb5fe18fab305a5的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 升级版,用Python来进行多条曲线动态演示全球疫情变化
  2. 用 Python 动态曲线图来对全球疫情进行演示
  3. 用 Python可视化神器 Plotly 动态演示全球疫情变化趋势
  4. 官方示例(十三):3步70行代码开发GIS点坐标技术 ThingJS
  5. 利用端口扫描进行终端合规性检查的一个示例
  6. PHP自定义函数+系统函数库(代码示例)
  7. 如何将smarty安装到MVC架构中(代码示例)
  8. PHP 跨域之header函数(代码示例)
  9. PHP中Trait的用法及示例

随机推荐

  1. MYSQL从同一个表中选择标记关联的id
  2. 【整理】更改MSSQL默认字符集
  3. MySQL(三)——数据行 操作
  4. 求sql【复制同一表记录,但有两个字段需要
  5. [Python] - No.1 使用python3连接Mysql
  6. 从另一个表中的列更新列值
  7. 减去两个SELECT语句以产生单个结果?
  8. Python: Sqlite3简单封装实例
  9. 使用id替换存储在xml数据中的值
  10. 求助:请大侠帮我把下面的查询语句改写为可