(力扣)279、完全平方数

给出一个数字n,它可以由若干个完全平方数相加得到。这道题目需要求出,所需要的完全平方数的最小数量。
求最小的问题,可以用广度优先搜索算法(BFS)求解。不难想出,这些完全平方数肯定比n要小。因此,我新建一个数组,称为完全平方数组,来保存所有比n小的完全平方数。当然,如果在这个过程中,发现n本身就是完全平方数,那么直接输出1即可。
接下来,使用BFS求解。新建bfs数组,BFS是每一步都需要求出所有情况。比如当有一个完全平方数时,列出完全平方数组中的值即可。当增加一个完全平方数时,使完全平方数组中的数两两相加,并删除只有一个完全平方数的情况,这样数组中全部是两个完全平方数相加的情况。这样,每增加一个完全平方数,使数组中的每个值与完全平方数组中所有值分别相加。在这个过程中,如果遇到某一种情况的和为n,输出记录的完全平方数个数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值