今天是第一次练习Leetcode题目,听别人说挺好的,就来试试。
*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.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].*
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
for i in range(0, len(nums)):
for j in range(i+1, len(nums)):
if(target == nums[i] + nums[j]):
return [i, j]
这是我第一次提交时使用的代码,虽然结果是对的,但是……
此时我的内心是崩溃的,成绩竟然这么低,好伤心!后来在讨论区看到兄弟们在使用字典,我也试了试,时间开销果然下去了。
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
dict1 = {}
for i in range(len(nums)):
if nums[i] in dict1:
return [dict1[nums[i]], i]
else:
dict1[target - nums[i]] = i
这个结果还是不错的,此时,我对那个用时最少的算法更感兴趣了。但是,并没有找到。
后来,我又提交了一次,
我用了同样的代码,结果时间开销却不一样,此时我觉得排在我前面的这些,也都是像我一样刷出来的。
今天就到这了。