leetcode: 1.兩數之和
阿新 • • 發佈:2018-12-14
1、問題
給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。
你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
2、兩種程式碼(這裡的O(n)時間複雜度解法,採用了空間換時間的方式)
class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ """ :Solution1 :One type of solution by which we can get higher speed but more memory consuming. """ dataset={} index=0 for firstNumber in nums: dataset[firstNumber]=index index+=1 firstIndex=0 result=[] for firstNumber in nums: if dataset.has_key(target-firstNumber) and firstIndex!=dataset[target-firstNumber]: result.append(firstIndex) result.append(dataset[target-firstNumber]) return result firstIndex+=1 return result """ solution2 firstIndex=0 secondIndex=0 result=[] for firstNumber in nums: secondIndex=0 for secondNumber in nums: if firstIndex!=secondIndex: sum_number=firstNumber+secondNumber if sum_number==target: result.append(firstIndex) result.append(secondIndex) return result secondIndex+=1 firstIndex+=1 return result """