Python 中求兩數之和


假設我們有一個整數陣列。我們必須返回兩個整數的索引,如果把它們相加,我們會到達一個特定的目標,該目標也是給定的。在這裡,我們將做一個假設,即陣列中始終存在唯一解,因此不存在同一目標的兩組索引。

例如,假設陣列像 A = [2, 8, 12, 15],目標和為 20。然後它將返回索引 1 和 2,因為 A[1] + A[2] = 20。

為了解決這個問題,我們將迴圈遍歷陣列中的每個元素。因此,按照以下步驟解決此問題。

  • 定義一個對映來儲存結果,稱為 res
  • 對範圍 0 到 n - 1 內的索引 i(其中 n 是陣列中的元素數)
    • 如果目標 - A[i] 在 res 中
      • 返回 res[target - A[i]] 和 i 作為索引
    • 否則將 i 放入 res 作為 res[A[i]] − = i

讓我們看看實現情況以獲得更好的理解

示例

 即時演示

class Solution(object):
   def twoSum(self, nums, target):
      """
      :type nums: List[int]
      :type target: int
      :rtype: List[int]
      """
      required = {}
      for i in range(len(nums)):
         if target - nums[i] in required:
            return [required[target - nums[i]],i]
         else:
            required[nums[i]]=i
input_list = [2,8,12,15]
ob1 = Solution()
print(ob1.twoSum(input_list, 20))

輸入

input_list = [2,8,12,15]
target = 20

輸出

[1, 2]

更新於: 2020 年 4 月 28 日

18K+ 閱讀量

開啟你的 職業生涯

完成課程以獲得認證

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