279. 完全平方数
2020-08-25 本文已影响0人
含泪若笑
好久没有刷题了,还是要坚持和继续的,刷题是我快乐!
这个的思路就是一层一层的进行,在第一层用所有小于n的平方数去被减于n,将剩下的数字分别再进行平方数的相减,直到有一个为0,即可以得到最小个数。
这里用一个队列来装要处理的数字和得到的差值,首先把一层放进去,在分别poll处理处理,再放下一次差的结果,不断循环。
对于记录已经计算过的数字,可以用hashSet 或者一个boolean的数组,我都写了,发现数组的方式更快。
学习的点:
queue有两个添加元素的方法——add和offer,区别是当超出队列界限的时候,add()方法是抛出异常让你处理,而offer()方法是直接返回false。
代码:
https://github.com/hanleirx/LeetCode/blob/master/279.%20%E5%AE%8C%E5%85%A8%E5%B9%B3%E6%96%B9%E6%95%B0