晚上赶在睡觉之前AC
的,好久没有刷过题目了。题目描述如下:
We define the Perfect Number is a positive integer that is equal to the sum of all its positive divisors except itself.
Now, given an integer n, write a function that returns true when it is a perfect number and false when it is not.
Example:
Input: 28
Output: True
Explanation: 28 = 1 + 2 + 4 + 7 + 14
题目大意是,给定一个数字,判断该数字是否是完美数字,完美数字的定义是,该数字等于所有约数的和。
题目不是很难,可以直接暴力搜索,遍历找到该数字的约数,求和再比较即可。但是如果直接暴力搜索,我推测一般会超时。所以最好进行一定的优化。
假定给定数字为num
,遍历的数字为i
。明显可知,[num / i, num]
这个范围内的数字不可能是num
的约数了,因此,每次i
增加时,可以同时更新中止条件,这样能省下来很大一部分时间,具体代码如下:
1 | class Solution { |
最终提交结果AC
,超过了96.47%
的提交,但是占用内存较多,不知道是什么原因(也不知道内存占用这项数据什么时候上线的)。