Leetcode解题报告:279. Perfect Squares
来源:互联网 发布:国网电子商务公司知乎 编辑:程序博客网 时间:2024/06/07 13:31
题意:
Given a positive integer 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
.
难度:Medium
解题思路: 这道题的意思是需要给定一个n,找出这个数最少可以拆分成几个完全平方数的和。 利用动态规划的思想,如果n是完全平方数,则它的结果就是1,。否则,把n拆成两个数的和,比如x=i+j,那么dp[x]=min(dp[i]+dp[x-i]),对于n之前的每一个i值都要这样计算,这样就有循环嵌套,当i为1-n-1的时候,时间复杂度为O(n^2),超时了,然后我改成了i从1到n/2,仍然超时。 再仔细考虑一下,一个整数n肯定能拆成一个完全平方数 i和 n-i的和,内层循环只要满足i^2<=n即可,这样总体时间复杂度应该是O(n^1.5),通过了。
class Solution {public: int numSquares(int n) { vector<int> dp(n+1,0); if(n<0) return 0; if(n==1) return 1; dp[1]=1; for(int i =2;i<=n;i++) { if(i==int(sqrt(i))*int(sqrt(i))) { dp[i]=1; continue; } for(int j = 1;j*j<=i;j++) { int x=dp[i-j*j]+dp[j*j]; if(dp[i]==0) dp[i]=x; else dp[i]=min(x,dp[i]); } } return dp[n]; }};
0 0
- [leetcode] 279. Perfect Squares 解题报告
- LeetCode解题报告 279. Perfect Squares [medium]
- Leetcode解题报告:279. Perfect Squares
- [LeetCode] 279. Perfect Squares 解题报告
- [Leetcode] 279. Perfect Squares 解题报告
- 【LeetCode】Perfect Squares 解题报告
- [leetcode] 279. Perfect Squares
- 279. Perfect Squares LeetCode
- 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
- [leetcode] 279. Perfect Squares
- Leetcode-279. Perfect Squares
- LeetCode 279. Perfect Squares
- 【LeetCode】258. Add Digits
- 日期选择器
- centos 编译php5
- 【Android应用开发技术:用户界面】自定义View类设计
- QQ空间时光轴特效
- Leetcode解题报告:279. Perfect Squares
- Unity生成二维码功能
- 数据库并集union、交集intersect、差集except
- 【LeetCode】241. Different Ways to Add Parentheses
- Docker-compose 到 Kubernetes 的迁移工具!
- 关于利用ireport制作报表时,出现与JDK不兼容的情况
- ZCMU-1379-The Black Hole of Numbers
- windows登录ubuntu ssh服务端
- 【连载】研究EasyUI系统—Easyloader组件