Python程式:查詢左右元素和相等的索引


假設我們有一個名為nums的專案列表,我們必須找到最小的索引i,使得位於i左側的數字之和等於位於i右側的數字之和。如果找不到任何這樣的解,則返回-1。

因此,如果輸入類似於nums = [8,2,3,6,5,2,5,9,1,2],則輸出將為4,因為索引4左側元素的和[8,2,3,6] = 19,而右側元素的和[2,5,9,1,2] 也為19。

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

  • r := nums中所有元素的總和

  • l := 0

  • 對於nums中的每個索引i和值x,執行:

    • r := r - x

    • 如果r等於l,則

      • 返回i

    • l := l + x

  • 返回-1

示例

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

def solve(nums):
   r = sum(nums)
   l = 0
   for i,x in enumerate(nums):
      r -= x
      if r == l:
         return i
      l += x
   return -1

nums = [8,2,3,6,5,2,5,9,1,2]
print(solve(nums))

輸入

[8,2,3,6,5,2,5,9,1,2]

輸出

4

更新於: 2021年10月11日

574 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.