class Solution {
private int min;
private int count;
public int numSquares(int n) {
if (n == 0 || n == 1)
return n;
min = n;
count = 0;
helper(n,count);
return min;
}
private void helper(int remaining, int count){
if ( remaining == 0){
if (count < min)
min = count;
}
for (int i = 1; i * i <= remaining; i ++){
count ++;
helper(remaining - i * i, count);
count --;
}
}
}老师你好,我使用回溯法去解了一下279-LeetCode,但是超时了,我测试了几个input,都得到了准确答案,所以我想我的解法应该是没有问题的,或许可能存在可以优化的地方?我使用的语言是java。
顺便问一下这道题用回溯法的时间复杂度是多少?我猜想是O(logn*log(n)),不知道对吗