leetcode1390

 1 class Solution:
 2     def sumFourDivisors(self, nums: 'List[int]') -> int:
 3         result = 0
 4         n = len(nums)
 5         for i in range(n):
 6             s = set()
 7             cur = nums[i]
 8             for j in range(1,int(cur ** 0.5) + 1):
 9                 if cur % j == 0:
10                     s.add(j)
11                     s.add(cur//j)
12             if len(s) == 4:
13                 result += sum(list(s))
14         return result

算法思路:求约数。

本题思路很简单,就是计算一个数字的约数。但是如果暴力求解,可能会超时。

每次计算出一个约数,则可以使用除法计算出另一个约数。这种策略可以将时间复杂度降低到O(sqrt(N))。

猜你喜欢

转载自www.cnblogs.com/asenyang/p/12545372.html