作文以记之 ~ 完全平方数

  • 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出来,自己真的是太菜了,害

侵权删~

作文以记之 ~ 完全平方数相关推荐

  1. 作文以记之 ~ 克隆图

    作文以记之 ~ 克隆图 0.前言 1.题目描述 2.解题思路 2.1 方法1 ~ 利用BFS 2.1.1 思路 2.1.2 程序代码 2.2 方法2 ~ 利用 DFS 2.2.1 思路 2.2.2 程 ...

  2. 记一次计算机课作文,关于记一次课堂游戏作文(精选5篇)

    关于记一次课堂游戏作文(精选5篇) 在平凡的学习.工作.生活中,许多人都有过写作文的经历,对作文都不陌生吧,作文根据写作时限的不同可以分为限时作文和非限时作文.你知道作文怎样写才规范吗?下面是小编收集 ...

  3. 名帖288 董其昌 行书《岳阳楼记》

    此卷书北宋范仲淹的名作<岳阳楼记>,纸本,行书.写于明万历三十七年(1609年),董其昌时年55岁,为补福建副使前四个月赋闲时所写.该书笔法由李北海而渐入米南宫,字大如拳,流畅劲健,通篇数 ...

  4. 记CSDN访问量10万+

    岳阳楼记 庆历四年春,滕子京谪守巴陵郡.越明年,政通人和,百废具兴,乃重修岳阳楼,增其旧制,刻唐贤今人诗赋于其上,属予作文以记之. 予观夫巴陵胜状,在洞庭一湖.衔远山,吞长江,浩浩汤汤,横无际涯,朝晖 ...

  5. 你猜,为什么Google和Facebook不用Docker?

    前言 本文涉及的所有技术细节都在开源软件和论文中. 写本文的起因是我想让分布式 PyTorch 程序更快的在 Facebook 的集群上启动.探索过程很有趣.也展示了工业机器学习需要的知识体系. 20 ...

  6. java icomparer_集合数据处理(C#、JavaScript 和 Java)

    Java 丢了好多年,最近在拣起来,首先当然是了解这么多年来它的变化,于是发现了 Java 8 的java.util.stream.在学习和试验的过程中,相比较于 C# 和 javascript,有那 ...

  7. C 网络库都干了什么?

    虽然市面上已经有很多成熟的网络库,但是编写一个自己的网络库依然让我获益匪浅,这篇文章主要包含: TCP 网络库都干了些什么? 编写时需要注意哪些问题? CppNet 是如何解决的. 首先,大家都知道操 ...

  8. 【Yeoman】热部署web前端开发环境

    本文来自 "简时空":<[Yeoman]热部署web前端开发环境>(自动同步导入到博客园) 1.序言 记得去年的暑假看RequireJS的时候,曾少不更事般地惊为前端利 ...

  9. aardio - 巧用字符分隔符\u0001

    在使用简单画板写古诗词效果过程中,遇到一个问题,就是文本换行时,如果行首为标点符号,会自动将上一行最后一个文字移到这行的标点符号前.这样,上一行末尾就有一个空缺了,不是很美观.当然,这符合语文写作规则 ...

最新文章

  1. Redis 桌面管理工具 RedisDesktopManager 2019.0 发布
  2. toeplitz--生成托普利兹矩阵
  3. java for循环_愉快地学Java语言:第五章 循环
  4. 自适应灰色动态滚动网站404页面源码
  5. java配置springmvc_告别XML 使用JAVA配置SpringMVC
  6. 简述对象和类的关系python_(一)Python入门-6面向对象编程:02类的定义-类和对象的关系-构造函数-实例属性-实例方法...
  7. 3.9-分区表fstab
  8. php文字成图片格式_使用PHP将文字转换成图片的功能实现方法
  9. c语言编程的头文件是什么,C语言头文件到底是什么?
  10. 信息学奥赛一本通(C++版)在线评测系统 1157:哥德巴赫猜想
  11. vue用vue-qart生产二维码
  12. 片刻之后我们就找到了计算机教室英语翻译,全新版大学英语综合教程2课文原文翻译...
  13. 数字金额转换大写 先写个完整的然后将如零拾替换成零
  14. -Dmaven.multiModuleProjectDirectory system propert
  15. 数字化转型,要把功夫炼到任督二脉
  16. 算是入行 ISP 了吧
  17. CF Educational Round 57(1096) 比赛记录
  18. 网上看到一个提供WebService的地方,如果作webService测试,不妨试试
  19. 还期待内存/闪存降价?三星/海力士们撑不住了
  20. oracle linux zfs,RAID、LVM与ZFS的介绍

热门文章

  1. 解决安卓PIE无法运行问题
  2. 大聪明教你学Java | 如何写出优雅的接口
  3. 蓝牙 WBS 宽带通话 (wide band speech) 剖析(二) -- BCCMD control chip
  4. 诚之和:首个俄罗斯太空电影摄制组准备返回地球
  5. GitHub上25个最受欢迎的开源机器学习库
  6. 关于时间与字符串相互转换
  7. 图片怎么修改成750x750像素?
  8. python怎样使用各个日期赤纬_Python常用的日期时间处理方法示例
  9. 在css中如何调整字间距?
  10. 【python安装】其他支持库的安装