1.两数之和

爷,独闯天下 提交于 2020-02-20 08:03:49

给定一个整数组nums和一个目标target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
示例 :给定nums = [2,7,11,15],target=9,因为nums[]+nums[]=2+7=9,所以返回[0,1]
在这里我给出我的python的方法和代码。
方法一 : 暴力破解
对于这个问题我第一想法,遍历数组得到数组的值和他的下标,分别为( i,value),然后从nums的j = i+1遍历数组,进行判断是否存在等于y = target - value的元素

def twoSum(sums,target):
    length = len(nums)#获取数组的长度
    for i,x in enumerate(nums):#i是数组的下标,value是数组的元素
        y = target - x
        j = x + 1#为了避免重复,我们从第i+1项开始
        while j < length:
            if(nums[j] == y):
                return [i,j]#如果存在则返回对应元素的下标
            j += 1

方法二 :哈希表
暴力破解的随说简单,但时间复杂度为O(n*n),所以我们考虑用神办法能够降低时间复杂度,所以考虑用哈希表来解决问题,通过迭代的方法将所有元素添加到哈希表中同时我们比较该元素对应的元素是否存在于哈希表中,如果存在就返回答案即可

def twoSum(nums,target):
	hashmap = {}
	for i,x in enumerate(nums):
		y = target - x
		if y in hashmap:
			return [hashmap[y],i]
		else:
			hashmap[num] = i

第一次写LeeCode上的题,虽然是刚刚开始,但也要坚持下去,你我共勉,大家加油!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!