276-Paint-Fence
0x0 题目详情
0x1 解题思路
0x2 代码实现
class Solution {
public int numSquares(int n) {
if(n<2){
return 1;
}
return recur(n);
}
//返回将number拆成完全平凡数需要的个数
private int recur(int number){
int[] dp=new int[number+1];
dp[0]=1;
dp[1]=1;
for(int i=2;i<=number;i++){
int n=i;
for(int j=1;n>0;j+=2){
n-=j;
}
if(n==0){
dp[i]=1;
continue;
}
dp[i]=Integer.MAX_VALUE;
for(int j=1;j<=i/2;j++){
dp[i]=Math.min(dp[i],dp[j]+dp[i-j]);
}
}
return dp[number];
// if(number<2){
// return 1;
// }
// for(int i=1;n>0;i+=2){
// n-=i;
// }
// if(n==0){
// return 1;
// }
// int result=Integer.MAX_VALUE;
// for(int i=1;i<=number/2;i++){
// result=Math.min(result,recur(i)+recur(number-i));
// }
// return result;
}
}0x3 课后总结
Last updated