作文以记之 ~ 完全平方数
作文以记之 ~ 完全平方数
- 0、前言
- 1、题目描述
- 2、解题思路
- 2.1 方法1 ~ 利用BFS
- 2.1.1 思路
- 2.1.2 程序代码
- 2.2 方法2 ~ 利用动态规划
- 2.2.1 思路
- 2.2.2 程序代码
- 2.3 方法3 ~ 数学规律-- 四方平和定理
- 2.3.1 思路
- 2.3.2 程序代码
0、前言
本篇是力扣上 279.完全平方数 的题解,这个题目和我另外一篇题解即 作文以记之 ~ 平方根 与 完全平方数 中的题目有点类似,但还是有一些差别。前者是找出一个数可由几个完全平方数进行累加,后者是判断一个数是否是完全平方数!
同时这也是广度优先搜索BFS的练习题,难度中等。
具体题目可 点击此处 进行查看!
具体代码实现可 点击此处 进行查看!
1、题目描述
2、解题思路
2.1 方法1 ~ 利用BFS
2.1.1 思路
2.1.2 程序代码
class Solution {public:int numSquares(int n) {unordered_set<int> vis;queue<int> que;que.push(0);int step = 1;while (!que.empty()){int size = que.size();while (size--){int cur = que.front();que.pop();for (int i = 1; i*i + cur <= n; i++){int next = i*i + cur;if (next == n)return step;if (!vis.count(next)){que.push(next);vis.emplace(next);}}}step++;}return -1;}
};
注:以上思路中的图以及代码借鉴于力扣上一大佬的题解,侵权删~
2.2 方法2 ~ 利用动态规划
2.2.1 思路
2.2.2 程序代码
class Solution {public://方法2~动归int numSquares(int n) {vector<int> f(n + 1);for (int i = 1; i <= n; i++) {f[i] = i;for (int j = 1; j * j <= i; j++) {f[i] = min(f[i], f[i - j * j]+1);}}return f[n];}};
注:以上思路代码借鉴于又一大佬的题解,有需要者点击此处查看!
2.3 方法3 ~ 数学规律-- 四方平和定理
2.3.1 思路
2.3.2 程序代码
class Solution {public://方法3~数学规律--四方平和定理// 判断是否为完全平方数bool isSqrt(int x){int y = sqrt(x);return y*y == x;}// 判断是否能表示为 4^k*(8m+7)bool checkAns(int x){while (x % 4 == 0)x /= 4;return x % 8 == 7;}int numSquares(int n) {if (isSqrt(n))return 1;if (checkAns(n))return 4;for (int i = 1; i*i <= n; i++){int j = n - i*i;if (isSqrt(j))return 2;}return 3;}
};
注:以上思路以及程序代码来源于力扣官方题解,有需要者自己点击查看!
上述三种方法真的是,有点意思,我自己一开始三种都没有coding出来,自己真的是太菜了,害
侵权删~
作文以记之 ~ 完全平方数相关推荐
- 作文以记之 ~ 克隆图
作文以记之 ~ 克隆图 0.前言 1.题目描述 2.解题思路 2.1 方法1 ~ 利用BFS 2.1.1 思路 2.1.2 程序代码 2.2 方法2 ~ 利用 DFS 2.2.1 思路 2.2.2 程 ...
- 记一次计算机课作文,关于记一次课堂游戏作文(精选5篇)
关于记一次课堂游戏作文(精选5篇) 在平凡的学习.工作.生活中,许多人都有过写作文的经历,对作文都不陌生吧,作文根据写作时限的不同可以分为限时作文和非限时作文.你知道作文怎样写才规范吗?下面是小编收集 ...
- 名帖288 董其昌 行书《岳阳楼记》
此卷书北宋范仲淹的名作<岳阳楼记>,纸本,行书.写于明万历三十七年(1609年),董其昌时年55岁,为补福建副使前四个月赋闲时所写.该书笔法由李北海而渐入米南宫,字大如拳,流畅劲健,通篇数 ...
- 记CSDN访问量10万+
岳阳楼记 庆历四年春,滕子京谪守巴陵郡.越明年,政通人和,百废具兴,乃重修岳阳楼,增其旧制,刻唐贤今人诗赋于其上,属予作文以记之. 予观夫巴陵胜状,在洞庭一湖.衔远山,吞长江,浩浩汤汤,横无际涯,朝晖 ...
- 你猜,为什么Google和Facebook不用Docker?
前言 本文涉及的所有技术细节都在开源软件和论文中. 写本文的起因是我想让分布式 PyTorch 程序更快的在 Facebook 的集群上启动.探索过程很有趣.也展示了工业机器学习需要的知识体系. 20 ...
- java icomparer_集合数据处理(C#、JavaScript 和 Java)
Java 丢了好多年,最近在拣起来,首先当然是了解这么多年来它的变化,于是发现了 Java 8 的java.util.stream.在学习和试验的过程中,相比较于 C# 和 javascript,有那 ...
- C 网络库都干了什么?
虽然市面上已经有很多成熟的网络库,但是编写一个自己的网络库依然让我获益匪浅,这篇文章主要包含: TCP 网络库都干了些什么? 编写时需要注意哪些问题? CppNet 是如何解决的. 首先,大家都知道操 ...
- 【Yeoman】热部署web前端开发环境
本文来自 "简时空":<[Yeoman]热部署web前端开发环境>(自动同步导入到博客园) 1.序言 记得去年的暑假看RequireJS的时候,曾少不更事般地惊为前端利 ...
- aardio - 巧用字符分隔符\u0001
在使用简单画板写古诗词效果过程中,遇到一个问题,就是文本换行时,如果行首为标点符号,会自动将上一行最后一个文字移到这行的标点符号前.这样,上一行末尾就有一个空缺了,不是很美观.当然,这符合语文写作规则 ...
最新文章
- Redis 桌面管理工具 RedisDesktopManager 2019.0 发布
- toeplitz--生成托普利兹矩阵
- java for循环_愉快地学Java语言:第五章 循环
- 自适应灰色动态滚动网站404页面源码
- java配置springmvc_告别XML 使用JAVA配置SpringMVC
- 简述对象和类的关系python_(一)Python入门-6面向对象编程:02类的定义-类和对象的关系-构造函数-实例属性-实例方法...
- 3.9-分区表fstab
- php文字成图片格式_使用PHP将文字转换成图片的功能实现方法
- c语言编程的头文件是什么,C语言头文件到底是什么?
- 信息学奥赛一本通(C++版)在线评测系统 1157:哥德巴赫猜想
- vue用vue-qart生产二维码
- 片刻之后我们就找到了计算机教室英语翻译,全新版大学英语综合教程2课文原文翻译...
- 数字金额转换大写 先写个完整的然后将如零拾替换成零
- -Dmaven.multiModuleProjectDirectory system propert
- 数字化转型,要把功夫炼到任督二脉
- 算是入行 ISP 了吧
- CF Educational Round 57(1096) 比赛记录
- 网上看到一个提供WebService的地方,如果作webService测试,不妨试试
- 还期待内存/闪存降价?三星/海力士们撑不住了
- oracle linux zfs,RAID、LVM与ZFS的介绍