输出四位完全平方数_leetcode279_go_完全平方数
题目
给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。
你需要让组成和的完全平方数的个数最少。
示例 1:输入: n = 12 输出: 3
解释: 12 = 4 + 4 + 4.
示例 2:输入: n = 13 输出: 2
解释: 13 = 4 + 9.
解题思路分析
1、动态规划;时间复杂度O(n^(3/2)),空间复杂度O(n)
func numSquares(n int) int {dp := make([]int, n+1)for i := 1; i <= n; i++ {dp[i] = math.MaxInt32}arr := make([]int, 0)arr = append(arr, 0)for i := 1; i*i <= n; i++ {arr = append(arr, i*i)}for i := 1; i <= n; i++ {for j := 1; j*j <= i; j++ {if i < arr[j] {break}dp[i] = min(dp[i], dp[i-arr[j]]+1)}}return dp[n]}func min(a, b int) int {if a > b {return b}return a}
2、动态规划;时间复杂度O(n^(3/2)),空间复杂度O(n)
func numSquares(n int) int {dp := make([]int, n+1)for i := 1; i <= n; i++ {dp[i] = ifor j := 1; j*j <= i; j++ {dp[i] = min(dp[i], dp[i-j*j]+1)}}return dp[n]}func min(a, b int) int {if a > b {return b}return a}
3、广度优先搜索;时间复杂度O(n^(1/2)),空间复杂度O(n^(1/2))
func numSquares(n int) int {if n == 0 {return 0}list := make([]int, 0)list = append(list, n)level := 0for len(list) > 0 {level++length := len(list)for i := 0; i < length; i++ {value := list[i]for j := 1; j*j <= value; j++ {if j*j == value {return level}list = append(list, value-j*j)}}list = list[length:]}return level}
4、递归;时间复杂度O(n^(1/2)),空间复杂度O(n^(1/2))
var m map[int]intfunc numSquares(n int) int {m = make(map[int]int)return dfs(n)}func dfs(n int) int {if m[n] > 0 {return m[n]}if n == 0 {return 0}count := math.MaxInt32for i := 1; i*i <= n; i++ {count = min(count, dfs(n-i*i)+1)}return count}func min(a, b int) int {if a > b {return b}return a}
5、数学;时间复杂度O(n^(1/2)),空间复杂度O(1)
func numSquares(n int) int {if judge(n) {return 1}res := nfor res%4 == 0 {res = res / 4}if res%8 == 7 {return 4}for i := 1; i*i < n; i++ {if judge(n - i*i) {return 2}}return 3}func judge(n int) bool {value := int(math.Sqrt(float64(n)))return value*value == n}
总结
Medium题目,多种解法,动态规划方法需要掌握
输出四位完全平方数_leetcode279_go_完全平方数相关推荐
- 输出四位完全平方数_LeetCode 题解 | 279. 完全平方数
力扣 279. 完全平方数 (点击查看题目) 题目描述 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示例 ...
- 输出四位完全平方数_完全平方数中的规律
PS:很近之前自己收集的资料 一个正整数如果是另一个整数的完全平方,那么我们就称这个数为完全平方数,也叫做平方数. 如:0,1,4,9,16,25,36,49,64,81,100,121,144,16 ...
- arduino四位数码管 同时输出四位数字
四位数码管和三位数码管原理类似,只不过四位数码管有4个共用的COM口. 根一共有4个公共端和8个接口,共12个引脚. 先设置所有引脚为输出状态,通过数组的形式,确定每个数字的0\1状态. 我使用的是共 ...
- 计算机在线平方,完全平方数批量判断在线计算器_三贝计算网_23bei.com
输入起始数字.结束数字.输出分割符.是否显示平方根等已知条件,点击计算按钮,可求出输入数字数目.完全平方根数目.和用所选分割符分开的平方数,当选择显示平方根时,"()"中表示该平方 ...
- 2017西安交大ACM小学期数论 [完全平方数]
完全平方数 发布时间: 2017年6月24日 17:01 最后更新: 2017年7月3日 09:27 时间限制: 1000ms 内存限制: 128M 描述 给定正整数b,求最大的整数a,使 ...
- 一个完全平方数是指一个数乘以自己,例:625=25^2; 特殊的完全平方数是指不仅是完全平方数而且平方后的数中有两个数字是相同的,例: 100=10^2; 144=12^2;
一人烤人曰..... 特殊的完全平方数 一个完全平方数是指一个数乘以自己,例:625=25^2; 特殊的完全平方数是指不仅是完全平方数而且平方后的数中有两个数字是相同的,例: 100=10^2; ...
- 【小5聊】Html基础之通过for循环和if相结合的方式实现1万内的完全平方数
完全平方指用一个整数乘以自己例如1*1,2*2,3*3等,依此类推. 若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数. 完全平方数是非负数,而一个完全平方数的项有两个 1.题目 一个整数 ...
- 0114练习 彩票、验证码、双色球的随机数 输出
//生成彩票数 System.out.println("生成的彩票数:");Random cp = new Random();for(int n=0;n<7;n++){Sys ...
- 有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。 读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字
有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分.现在,你的程序要根据起始时间和流逝的时间计算出终止时间. 读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表 ...
最新文章
- [Java] Web开发环境搭建 - MyEclipse 篇
- 多平台引擎使游戏业步入创作繁荣时代
- 自定义 URL Scheme 完全指南
- Linux 字符设备驱动开发基础(三)—— read()、write() 相关函数解析
- lrange是取出所有值并移除么_图解双指针 | LeetCode 27. 移除元素
- 20151227感知机(perceptron)
- 吴恩达《机器学习》--- Logistic分类
- linux 标准vruntime,linux – CFS中vruntime的概念是什么
- Python各版本的差异总结
- android listview刷新数据库,android – 如何在数据库更改后刷新ListView?
- Pandas 安装到Pycharm
- MSP430G2553开发板万年历加温湿度
- 淘宝客SDK,一键导入淘宝客商城,快速实现流量变现,新增商城返利功能
- d3-axis坐标轴
- 蒜厂年会|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)
- 蓝桥杯最终冲刺(冲刺Day2)
- Hdu 4503 湫湫系列故事——植树节
- rmf 文件如何打开?
- 糖果(2019第十届蓝桥杯省赛C++A组I题) 解题报告(状压dp) Apare_xzc
- SpringBoot 入参校验