LeetCode Perfect Squares
2015-10-22 09:54
387 查看
Description:
Given a positive integer n, find the least number of perfect square numbers (for example,
For example, given n =
Solution:
I think this problem has one problem, that it does not tell us the range of n, which may matter how we choose the algorithm.
And for this one, if DP is OK, then it is kind of trivial.
dp[i + square[j] ] = min ( dp[i] + 1, dp[i+square[j]] )
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
3because
12 = 4 + 4 + 4; given n =
13, return
2because
13 = 4 + 9.
Solution:
I think this problem has one problem, that it does not tell us the range of n, which may matter how we choose the algorithm.
And for this one, if DP is OK, then it is kind of trivial.
dp[i + square[j] ] = min ( dp[i] + 1, dp[i+square[j]] )
<span style="font-size:18px;">import java.util.Arrays; public class Solution { public int numSquares(int n) { if (n <= 0) return 0; int[] dp = new int[n + 1]; Arrays.fill(dp, Integer.MAX_VALUE); int squares[] = new int ; int count = 0; for (int i = 1; i * i <= n; i++) { dp[i * i] = 1; squares[count++] = i * i; } for (int i = 1; i <= n; i++) { for (int j = 0; j < count && i + squares[j] <= n; j++) dp[i + squares[j]] = Math.min(dp[i + squares[j]], dp[i] + 1); } System.out.println(n); return dp ; } public static void main(String[] args) { Solution s = new Solution(); System.out.println(s.numSquares(1)); } }</span>
相关文章推荐
- seajs学习(7)----文本插件
- jQuery - 左右拖动分隔条
- DOTA轮播
- seajs学习(6)----配置
- input文件上传,修改样式以及限制文件格式
- h5页面弹窗滚动穿透的思考
- seajs学些(5)----模块的加载启动
- seajs学习(3)----模块标识
- seajs学习(2)----CMD 模块定义规范
- Webpack 实现 Node.js 代码热替换
- JS+CSS实现仿msn风格选项卡效果代码
- 【CSS】IE6中的position:fixed问题与随滚动条滚动的效果
- seajs学习(1)----什么是系统
- jquery实现textarea高度自适应
- jquery操作元素的位置
- js 验证码 倒计时60秒
- Web缓存机制综述(HTML5缓存总结与细节释疑)
- js闭包
- jquery input file show image preview 预览图片
- js检测访问设备的类型