题目
解析
- 首先,把要求的数分为多个数相加,比如:10 = 1 + 9 = 1 + 4 + 4 + 1 = 1 + 1 + …… + 1
- 但是,由于使用的循环,所以肯定是1 + 9先出现
- 所以,依次类推,直到找到要求的数
- PS:
- BFS就是一层找一层,找到的肯定是最近的;
- 比如:4就是 0 + 4,只有一个数,设为第一层;同理,9 = 0 + 9,也只有一个数,同样为第一层
- 当遍历完0后,开始遍历第一层的数,那么找到的就是两个数的,即为第二层
- 依次类推
代码
1 | int numSquares(int n) { |