LeetCode OJ 279 Perfect Squares [Medium]
来源:互联网 发布:世界国家城市数据库 编辑:程序博客网 时间:2024/06/08 19:55
题目描述:
Given a positiveinteger n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...)which sum to n.
For example, given n = 12, return 3 because 12 = 4 + 4 +4; given n = 13, return 2 because 13 = 4 + 9.
题目理解:
给定一个正整数n,该正整数等于x个完全平方数的和,返回最小的x
完全平方数:1,4,9,16,25……
题目分析:
1. n 总是等于n1+i1*i1,而n1也可以写成n2+i2*i2的形式;那么numSquares(n) = numSquares(n1)+1,numSquares(n1) = numSquares(n2)+1;
2. 首先想到用循环+递归的方法,依次尝试i,每次返回的是min(result,numSquares(n - i*i) + 1),极限情况是n=1时返回1,n=0时返回0;但这种方法超时;
3. 同样是想法1,n的结果依赖于比n小的其他数的结果,因此将小于等于n的所有数的输出结果都计算出来,存入一个数组中,这样减少了2的循环,缩短时间;
4. 还有其他方法,见博客http://www.cnblogs.com/grandyang/p/4800552.html
解答一(超时):
public static int numSquares(int n) { if(n == 1)return 1; if(n == 0)return 0; int res =n; for(int i = 1; i * i <= n; i++){ res = Math.min(res, numSquares(n- i*i) + 1); } return res;}解答二(对解答一的改进):
public static int numSquares(int n){ int[] dp = new int[n+1]; dp[0] = 0; for(int i = 1; i < n+1; i++) dp[i] = n; for (int i = 1; i <= n; i++) { for (int j = 1; j * j <= i; j++) { dp[i] = Math.min(dp[i], dp[i - j * j] + 1); } } return dp[n];}
阅读全文
0 0
- LeetCode OJ 279 Perfect Squares [Medium]
- LeetCode #279 - Perfect Squares - Medium
- Leetcode 279. Perfect Squares (Medium) (cpp)
- LeetCode解题报告 279. Perfect Squares [medium]
- leetcode 279: Perfect Squares
- Leetcode 279 Perfect Squares
- Leetcode #279 Perfect Squares
- [leetcode 279]Perfect Squares
- Leetcode:279Perfect Squares
- [LeetCode 279] Perfect Squares
- Perfect Squares - LeetCode 279
- leetcode 279 : Perfect Squares
- LeetCode 279: Perfect Squares
- LeetCode 279 Perfect Squares
- leetcode 279 : Perfect Squares
- (LeetCode 279) Perfect Squares
- LeetCode 279 Perfect Squares
- LeetCode-279:Perfect Squares
- 红黑树-Java实现
- struts2+spring+hibernate集成框架的环境搭建
- 数据结构树汇总
- tcp wrapper
- 2.3线性表的链式表示和实现(静态链表)
- LeetCode OJ 279 Perfect Squares [Medium]
- date的使用
- 车架号图像识别,车架号拍照识别,车架号扫描识别,车架号OCR识别
- NEUQ 1768 一道简单的递推题
- CentOS用yum安装、配置、升级、初始化5.5升级10.0MariaDB
- 6.6解题报告
- 顺序表 查找 插入 删除 操作
- 四十岁是科学家的黄金年龄 我还有机会
- 开发规范拟定--初版