检查数组中是否存在一个元素等于 Python 中所有其他元素的总和


假设我们有一个名为 nums 的数组,我们需要检查该数组是否包含一个元素,其值与所有其他元素的总和相同。

因此,如果输入类似于 nums = [3,2,10,4,1],则输出将为 True,10 = (3+2+4+1)。

为了解决这个问题,我们将遵循以下步骤:

  • freq := 一个空映射
  • total := 0
  • 对于 i 从 0 到 nums 的大小 - 1,执行:
    • freq[nums[i]] := freq[nums[i]] + 1
    • total := total + nums[i]
  • 如果 total 为偶数,则:
    • 如果 freq[(total / 2) 的商] 不为零,则:
      • 返回 True
  • 返回 False

让我们看看以下实现以获得更好的理解:

示例代码

在线演示

from collections import defaultdict
def solve(nums):
   freq = defaultdict(int)

   total = 0
   for i in range(len(nums)):
      freq[nums[i]] += 1
      total += nums[i]
     
   if total % 2 == 0:
      if freq[total // 2]:
         return True
   return False
 
nums = [3,2,10,4,1]
print(solve(nums))

输入

[3,2,10,4,1]

输出

True

更新于: 2021年1月15日

311 次查看

开启你的 职业生涯

通过完成课程获得认证

开始
广告