01:两数之和
题目:
代码:
class Solution:
# 暴力法,遍历
def twosum(self,nums,target):
"""
type nums: list[int]
type target : int
rtype : list[int]
"""
for i in nums:
start_index = nums.index(i) #获得本次循环的初始坐标;
j = target - i #获得初始值与target差距,需要再次比较来看差值是否存在于nums
next_index = start_index + 1 #下次循环的初始坐标
temp_nums = nums[next_index: ] #python专用,创建新arr,在nums基础上,创建next_index 开始,一直到结束;
if j in temp_nums: #做判断差距,是否存在于剩下的nums;
return(nums.index(i),next_index+temp_nums.index(j)) #如果存在,返回:初始坐标,结果坐标
#哈希表法
def twoSum(self,nums,target):
"""
type nums: list[int]
type target : int
rtype : list[int]
"""
dict = {} #先创建空表
for i in range(len(nums)): #从0开始遍历
if target - nums[i] not in dict: #如果target - 此时遍历值 得到的值不在表内
dict[nums[i]] = i #向表内添加:此时的值,对应坐标
else: #如果target - 此时遍历值 得到的值在表内
return [dict[target-nums[i]],i] #返回减去的值的坐标(先于当前遍历值被添加,坐标小),当前遍历值的坐标
nums = [2,7,11,15]
target = 9
t = Solution()
rtAns = t.twoSum(nums,target)
print(rtAns)
参考:
[1]: 【LeetCode in Python 1. Two Sum LeetCode - Michelle小梦想家】 B站链接