[LeetCode]279. Perfect Squares
来源:互联网 发布:一步之遥知乎 编辑:程序博客网 时间:2024/06/03 07:20
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
.
思路:自己能想到的就是剪枝后的解空间搜索,虽然能AC但是时间复杂度太高
然后上网找到别人的动规方法,动规果真是难啊,代码简单但是难想出来,自己还需要做大量动规的题
动规的思路就是开辟一个n+1大小的数组,然后数组的下标为给出的数字n,数组的内容为n的最优平方和解,递推公式就是dp[i]=dp[i-j*j]+1
i为当前求最优解的数,也就是n,j为从1开始遍历到j*j小于等于i的数
解空间剪枝搜索代码:
public class Solution { int res=Integer.MAX_VALUE; public int numSquares(int n) { get(n,0); return res; } public void get(int n,int times){ if(n==0){ res=Math.min(times,res); return; } if(times>=res||n<0){ return; } for(int i=(int)Math.sqrt(n);i>0;i--){ get(n-(int)Math.pow(i,2),times+1); } }}
public class Solution { public int numSquares(int n) { int[] dp=new int[n+1]; for(int i=1;i<=n;i++){ int min=i; for(int j=1;j*j<=i;j++){ min=Math.min(min,dp[i-j*j]+1); } dp[i]=min; } return dp[n]; }}
0 0
- [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
- leetcode.279. Perfect Squares
- LeetCode 279. Perfect Squares
- [leetcode] 279. Perfect Squares
- Leetcode-279. Perfect Squares
- LeetCode 279. Perfect Squares
- Leetcode 279. Perfect Squares
- [LeetCode]279. Perfect Squares
- 【LeetCode】 279. Perfect Squares
- (LeetCode) 279. Perfect Squares
- LeetCode 279. Perfect Squares
- LeetCode#279. Perfect Squares
- 超链接--页面位置跳转
- jdk8的新时间方法time
- 史上最实用的markdown 教程
- Android O 行为变更
- Android O 功能和 API
- [LeetCode]279. Perfect Squares
- 马克飞象 Markdown 语法,对应上一篇
- Oracle PL/SQL开发基础(第十二弹:插入、更新和删除)
- [LeetCode]504. Base 7(七进制)
- Java持续学习
- 向 Android O 迁移应用
- 富文本编辑器
- Java Web项目中解决中文乱码方法总结
- Redis源码探究-事件驱动网络编程-Server