11
题解:
能够被num整除的所有元素的和,因为所有的数字只要大于自己的一半再加就会比这个数字大,所以直接过掉一半计算,时间复杂度O(N/2)。有人给出了O(1)的算法,但我没有理解到。
class Solution {
public:bool checkPerfectNumber(int num) {int sum = 0, num1 = int(num/2);for(int i=1; i<=num1; i++){if(num % i == 0){sum += i;} }if(sum == num)return true;elsereturn false;}
};
发布评论