檢查陣列中是否存在一個元素等於 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 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告