124.Perfect Squares
来源:互联网 发布:蛆恶心 知乎 编辑:程序博客网 时间:2024/05/16 06:45
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
.
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
Subscribe to see which companies asked this question.
给定一个正整数,求该正整数可以被被分解成完全平方数的个数。
For example, given n = 12, return 3 because 12 = 4 + 4 + 4; given n = 13, return 2 because 13 = 4 + 9.
采用动态规划的思想。
如果n为完全平方数,则f[n]=1;
否则f(n) = min{f(k)+f(n-k)},1<=k<=n/2
/** * 给定一个正整数,求该正整数可以被被分解成完全平方数的个数。 * For example, given n = 12, return 3 because 12 = 4 + 4 + 4; given n = 13, return 2 because 13 = 4 + 9. * 采用动态规划的思想。 * 如果n为完全平方数,则f[n]=1; * 否则f(n) = min{f(k)+f(n-k)},1<=k<=n/2 * @date 20160510 * @param n * @return */public int numSquares(int n) {if(n == 1){return 1;}int f[] = new int[n+1];//f[i]表示给定i时其对应的符合条件的完全平方数个数。f[1]=1;for(int i=2;i<=n;i++){/*首先判断是否为一个完全平方数*/double y = Math.sqrt(i);if( y - (int)y == 0){f[i] = 1;continue;}/*不为完全平方数时*/f[i] = f[1]+f[i-1];for(int k=2;k<=i/2;k++){if(f[k]+f[i-k]<f[i]){f[i] = f[k]+f[i-k];}}} return f[n]; }
0 0
- 124.Perfect Squares
- Perfect Squares
- Perfect Squares
- Perfect Squares
- Perfect Squares
- Perfect Squares
- Perfect Squares
- Perfect Squares
- Perfect Squares
- Perfect Squares
- Perfect Squares
- Perfect Squares
- Perfect Squares
- Perfect Squares
- Perfect Squares
- Perfect Squares
- Perfect Squares
- Perfect Squares
- 【S2HS学习笔记】第二章节:JSP/Servlet及相关技术详解
- 开源Android-PullToRefresh下拉刷新源码分析
- android 自定义控件属性
- XML(1)Java解析XML的四种方法
- Erlang NIF简析
- 124.Perfect Squares
- CocosPod系统升级bug
- Android 支付宝开发错误总结
- 安装ios beta版
- 安装NVIDIA驱动
- java注解的理解
- Struts1 和 Struts2区别
- What’s the difference between machine learning, statistics, and data mining?
- 进程与线程的一个简单解释