這是來自於leetcode的題目: 給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的 兩個 整數。 你可以假設每種輸入只會對應一個答案。但是,你不能重覆利用這個數組中同樣的元素。這是示例: 給定 nums = [2, 7, 11, 15], target = 9 ...
這是來自於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]