Leetcode001 Two Sum
Contents
Question:
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].
Solution1:
Brute force method. Time complexity is $O(n^2)$.
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
for i in range(len(nums)):
for j in range(i+1, len(nums)):
if (nums[i] + nums[j] == target):
return [i, j]
nums = [2, 7, 11, 15]
target = 9
result = Solution().twoSum(nums, target)
def linkedlist2list(head):
num = []
current_ptr = head
while current_ptr is not None:
num.append(current_ptr.val)
current_ptr = current_ptr.next
return num
Solution2:
Save the calculated results. Time complexity is $O(n)$.
class Solution():
def twoSum(self, nums, target):
d = {}
for i, n in enumerate(nums):
diff = target - n
if diff in d:
return [d[diff], i]
else:
d[n] = i
nums = [2, 7, 11, 15]
target = 9
result = Solution().twoSum(nums, target)
Author AlexJinlei
LastMod 2018-04-18