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.
开个新的笔记,除了每天恶补数学知识外,编程能力自然也是不能落下,那就做leetcode的练习题吧
由于自己编程基础能力比较弱,就从easy , medium, hard这样的顺序开始做起
第一题看着简单,但是解法却是很巧妙
我的解法, low,直接提示Time Limit Exceeded
def two_sum(nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
nums_len = len(nums)
if nums_len < 2:
return False
i = 0
while i < nums_len - 1:
j = i + 1
while j < nums_len:
if nums[i] + nums[j] == target:
return i, j
j += 1
i += 1
if i == nums_len - 1:
return False
巧妙的解法:
def two_sum(nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
if len(nums) < 2:
return False
temp_dict = {}
for i in range(len(nums)):
if nums[i] in temp_dict:
return temp_dict[nums[i]], i
else:
temp_dict[target - nums[i]] = i
不多不说, 真的是非常的artful