完全平方数–java–BFS
思路:
这道题官方题解给的是dp和数学解法,这两天基本被DP搞得心态崩了。
这道题我想到的是BFS暴力,也是没谁了。过几天必须专门把DP弄明白
了。暴力解法,BFS模板直接用就好,没什么特别难理解的地方。
代码:
class Solution {
public int numSquares(int n) {
List<Integer> list = new LinkedList<>();
for( int i = 1; i * i <= n; ++i ){
list.add(i * i);
}
Queue<Integer> queue = new LinkedList<>();
queue.add(n);
int cnt = 1;
while( !queue.isEmpty() ){
int size = queue.size();
for( int i = 0; i < size; ++i ){
int num = queue.remove();
for( int number : list ){
if( num > number ){
queue.add(num - number);
}else if( num == number ){
return cnt;
}
}
}
++cnt;
}
return cnt;
}
}