檢查Python中是否可以將一個包含1和2的陣列分成兩個和相等的子陣列


假設我們有一個數組nums,其中只儲存1和2。我們需要檢查該陣列是否可以分成兩個不同的部分,使得每個部分的元素之和相同。

因此,如果輸入類似於nums = [1, 1, 2, 2, 2],則輸出將為True,因為我們可以將此陣列分成[1, 1, 2]和[2, 2],每個部分的和都是4。

為了解決這個問題,我們將遵循以下步驟:

  • total := 0,one_count := 0
  • total := nums中所有元素的和
  • one_count := nums中1的數量
  • 如果total是偶數,則
    • 返回False
  • 如果(total / 2)的整數部分是偶數,則
    • 返回True
  • 如果one_count > 0,則
    • 返回True
  • 否則,
    • 返回False

讓我們看看下面的實現來更好地理解:

示例

 即時演示

def solve(nums):
   total = 0
   one_count = 0
   total = sum(nums)
   one_count = nums.count(1)
   if total % 2:
      return False
   if (total // 2) % 2 == 0:
      return True
   if one_count > 0:
      return True
   else:
      return False
nums = [1, 1, 2, 2, 2]
print(solve(nums))

輸入

[1, 1, 2, 2, 2]

輸出

True

更新於: 2020-12-30

131 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.