LeetCode解题报告 279. Perfect Squares [medium]
来源:互联网 发布:java开发 常用代码 编辑:程序博客网 时间:2024/06/05 09:14
题目描述
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
.
解题思路
题目很容易理解,将一个数分解为几个平方数的和,返回最小需要的平方数的个数。
用动态规划求解,一个数x如果可以表示成a+b*b,那么最后所求的结果就是组成a所需要的平方数的个数再加1。
状态转移方程为dp[a+b*b]=min(dp[a]+1, dp[a+b*b])。
将一个长度为x的数组,完全平方数初始化为1,其余数初始化为无穷大,如果一个数是完全平方数,那么返回的值就是它本身,也就是1;如果一个数不是完全平方数,那么返回的值就是dp[a]+1,因为此时dp[a+b*b]是无穷大。
代码如下:
class Solution {public: int numSquares(int n) { int dp[n+1]; for (int i=0; i<n+1; i++) { dp[i]=INT_MAX; } for (int i=0; i*i<=n; i++) { dp[i*i]=1; } for (int i=0; i<=n; i++) { for (int j=0; i+j*j<=n; j++) { dp[i+j*j]=min(dp[i]+1,dp[i+j*j]); } } return dp[n]; }};
O(N)*O(sqrt(N))
0 0
- LeetCode解题报告 279. Perfect Squares [medium]
- [leetcode] 279. Perfect Squares 解题报告
- Leetcode解题报告:279. Perfect Squares
- [LeetCode] 279. Perfect Squares 解题报告
- [Leetcode] 279. Perfect Squares 解题报告
- 【LeetCode】Perfect Squares 解题报告
- Leetcode 279. Perfect Squares (Medium) (cpp)
- 279. Perfect Squares -Medium
- LeetCode #279 - Perfect Squares - Medium
- 279. Perfect Squares 类别:medium 难度:medium
- LeetCode OJ 279 Perfect Squares [Medium]
- [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
- Weex Android加载本地图片及网络图片
- 分类之四:Tree
- HDU3564 线段树+dp
- 图片工具出现bug排查问题事故总结与提高
- javaAgent说明和例子
- LeetCode解题报告 279. Perfect Squares [medium]
- javascript 简单的个人理解(前端技术)
- 注解、动态代理与反射的应用
- 运维工程师前景
- Weex Android交互篇
- 进程的死锁
- libpcap流量统计
- iaas paas SaaS 区别
- android地图开发