1. 程式人生 > >Python3 筆記01:求兩數之和

Python3 筆記01:求兩數之和

這是來自於leetcode的題目:

  給定一個整數陣列 nums 和一個目標值 target,請你在該陣列中找出和為目標值的 兩個 整數。
  你可以假設每種輸入只會對應一個答案。但是,你不能重複利用這個陣列中同樣的元素。

這是示例:
  給定 nums = [2, 7, 11, 15], target = 9
  因為 nums[0] + nums[1] = 2 + 7 = 9
  所以返回 [0, 1]

 

主要記錄的是使用雜湊表來解決問題:

  因為要輸出的是列表的索引,所以使用列表內容作為鍵,以索引作為值,方便查詢,建立一個字典。

# 使用內建函式 zip() 打包
hash_ = dict(zip(nums, range(len(nums))))

以示例為例,獲得的將是: {2: 0, 7: 1, 11: 2, 15: 3} 

  接著將目標值與每個值相減後得到的一個值,查詢雜湊表中是否存在這個值:

for i in range(len(nums)): 
            num=target-nums[i] 
            if hash_.get(num): 
                # 判定相同索引不作為結果輸出:
                if i != hash_[num]:
                    return [i,hash_[num]]

獲得結果: [0, 1]