""" Time Complexity = O(N^2) Space Complexity = O(1) Given an array of integers, return indices of 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. Example: Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1]. """
低效率
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
for i in nums:
j = target - i
tmp_nums_start_index = nums.index(i) + 1
tmp_nums = nums[tmp_nums_start_index:]
if j in tmp_nums:
return [nums.index(i), tmp_nums_start_index + tmp_nums.index(j)]
if __name__ == '__main__':
print(Solution().twoSum((2, 7, 11, 15), 17))
使用dict提高效率
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
dict={}
for i in range(len(nums)):
if target-nums[i] not in dict:
dict[nums[i]]=i
else:
return[dict[target-nums[i]],i]
if __name__ == '__main__':
print(Solution().twoSum((2, 7, 11, 15), 17))