【leetcode题解】【有问题,python没AC,java却过了】【M】【66】Perfect Squares
2015-12-21 22:38
621 查看
Given a positive integer n, find the least number of perfect square numbers (for example,
For example, given n =
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
如果一个数x可以表示为一个任意数a加上一个平方数bxb,也就是x=a+bxb,那么能组成这个数x最少的平方数个数,就是能组成a最少的平方数个数加上1(因为b*b已经是平方数了)。
不过不知道为何,同样的算法,java,ac了,python,就超时了。
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.
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
如果一个数x可以表示为一个任意数a加上一个平方数bxb,也就是x=a+bxb,那么能组成这个数x最少的平方数个数,就是能组成a最少的平方数个数加上1(因为b*b已经是平方数了)。
不过不知道为何,同样的算法,java,ac了,python,就超时了。
【java的】 public class Solution { public int numSquares(int n) { int[] dp = new int[n + 1]; Arrays.fill(dp, Integer.MAX_VALUE); dp[0] = 0; for(int i = 1; i <= n; ++i) { int min = Integer.MAX_VALUE; int j = 1; while(i - j*j >= 0) { min = Math.min(min, dp[i - j*j] + 1); ++j; } dp[i] = min; } return dp ; } }
【python】 class Solution(object): def numSquares(self, n): maxx = 9#1<<11 dp = [maxx]*(n+1) dp[0] = 0 for a in xrange(1,n+1): b = 1 minn = maxx while a- b*b >= 0 : minn = min(dp[a - b*b]+1,minn) b+=1 dp[a] = minn return dp
相关文章推荐
- 【转】纯CSS写三角形-border法[基础篇]
- 20151221jquery学习笔记--验证插件
- How to check the version of JSF
- 超实用的jQuery代码段 - jQuery Callback()
- nodejs的某些api~(一)node的流1
- 【转】纯CSS写三角形-border法[晋级篇01]
- Jquery特效之=》仿京东多条件筛选特效
- 20151221jqueryUI---日历UI代码备份
- 20151221jquery学习笔记---日历UI
- JS对象转化为JSON字符串
- 前端开发工程师必备JS技能-切图
- 如何用CSS进行网页布局
- JS_数据类型
- javascript 浏览器调用原理
- 搭建Maven私服——nexus
- js的一些学习笔记2
- 玩玩EXPRESSJS
- JSP第二篇
- Javascript数组常用方法
- JS入门笔记