Python3 筆記01:求兩數之和
阿新 • • 發佈:2018-11-30
這是來自於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]