279. Perfect Squares
来源:互联网 发布:淘宝企业店铺怎么操作 编辑:程序博客网 时间:2024/06/05 17:17
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.
public class Solution { public int numSquares(int n) { if(n<1) return 0; if(n==1) return 1; int[] dp = new int[n+1]; for(int i=1; i*i <=n; i++){ dp[i*i] = 1; } for(int i=2; i < n+1; i++){ int t = Integer.MAX_VALUE; for(int j=1; j <= i/2; j++){ t = Math.min(t, dp[j] + dp[i-j]); } dp[i] = dp[i]==1?1:t; } return dp[n]; }}
但是这样的复杂度还是较高。
那么关键是减少对一些不好的情况的遍历,只需考虑加和中其中一个数为平方数即可。
改进后的代码
public class Solution { public int numSquares(int n) { if(n<1) return 0; if(n==1) return 1; int[] dp = new int[n+1]; for(int i=1; i*i <=n; i++){ dp[i*i] = 1; } for(int i=2; i < n+1; i++){ if(dp[i]==1) continue; int t = Integer.MAX_VALUE; for(int j=1; j*j < i; j++){ t = Math.min(t, dp[i-j*j] +1); } dp[i] = t; } return dp[n]; }}
阅读全文
0 0
- 279.Perfect Squares
- [leetcode] 279. Perfect Squares
- 279. Perfect Squares
- 279. Perfect Squares LeetCode
- leetcode 279. Perfect Squares
- leetcode 279. Perfect Squares
- [LeetCode]279. Perfect Squares
- 279. Perfect Squares
- 279. Perfect Squares
- 279. Perfect Squares
- LeetCode-279.Perfect Squares
- LeetCode *** 279. Perfect Squares
- 279. Perfect Squares
- 279. Perfect Squares
- 279. Perfect Squares
- leetcode.279. Perfect Squares
- 279. Perfect Squares
- 279. Perfect Squares
- JDBC连接池
- 墙绘装饰设计公司网站织梦模板免费下载
- float浮动的消除
- Python NLPIR2016 与 wordcloud 结合生成中文词云
- 1044. 火星数字(20)
- 279. Perfect Squares
- 一个简单的银行系统
- transient
- codeforce814B An express train to reveries (有点高中分类讨论的意思)
- [P2678]跳石头
- Android自定义网络请求状态组件
- centos 6.5安装erlang 18.3
- 利用反射拼接sql语句
- 求三角形内任意一点到另一个三角形上的映射坐标点