Given an array of integers, return indicesof the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the same element twice.
一個整數數組中兩個元素可以相加得到給定的數值,每次輸入只得到1組輸出,不能重復使用數組中的數。
例:
Given nums = [2, 7, 11, 15]
target = 9
Because nums[0] + nums[1] = 2 + 7 = 9
return [0,1]
type nums: List[int]
type target: int
rtype: List[int]
BF: 時間復雜度 O(n^2)
class Solution:
def twoSum(self, nums, target):
#嵌套循環遍歷列表,元素相加是否符合target值
length = len(nums)
for index in range(length) :
for n in range(index+1,length):
if(nums[index] + nums[n] == target):
return (index,n)
哈希表:時間復雜度O(n)
class Solution:
def twoSum(self, nums, target):
dict = {} #字典是哈希表在python中的實現
for index in range(len(nums)):
left = target - nums[index] #向字典中檢查是否有left的值
if left in dict: #一邊檢索一邊向空字典中添加元素,字典中順序與nums中一致
return (dict[left], index)
else:
dict[nums[index]] = index #添加元素,nums轉化為字典