当前位置: 首页 > 后端技术 > Python

LeetCode1-两个和

时间:2023-03-26 15:03:48 Python

题目:给定一个整数数组nums和一个目标值target,请找出数组中和为目标值的两个整数,并返回它们的数组标记。您可以假设每个输入只有一个答案。但是,您不能在此数组中重复使用相同的元素。给定一个整数数组,返回两个数字的索引,使它们加起来等于一个特定的目标。您可能会假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素。例子:给定nums=[2,7,11,15],target=9因为nums[0]+nums[1]=2+7=9,return[0,1]解题思路:暴力耗尽:outerloop遍历每一个元素x,内层循环查找是否有一个目标元素的值等于target-x,返回相等的目标元素和x的索引。时间复杂度O(n^2),效率太低,pass。哈希表:哈希映射(map,dict),key保存元素,value保存元素索引。两种遍历方式:第一种遍历将所有元素及其索引保存到hashmap中,第二种遍历找到??等于target-x的target元素一种遍历方式:ify=target-x,thenx=target-y,所以遍历hashmap中是否存在值等于target-x的target元素。例子:nums=[2,11,7,15],target=9,hashmap={}遍历:i=0:target-x=9-2=7,7在hashmap中不存在,则x(2)添加hashmap,hashmap={2:0}i=1:target-x=9-11=-2,-2在hashmap中不存在,则x(-2)加入hashmap,hashmap={2:0,11:1}i=2:target-x=9-7=2,hashmap中存在2,则返回列表[2,0]代码:二次遍历(Java):classSolution{publicint[]twoSum(int[]nums,inttarget){Mapmap=newHashMap<>();for(inti=0;imap=新的HashMap<>();for(inti=0;iList[int]:dic={}fori,numinenumerate(nums):#enumeratethenumsarrayifnumindic:return[dic[num],i]else:dic[target-num]=i使用Python数组自带的索引方式解决问题:class解决方法:deftwoSum(self,nums:List[int],target:int)->List[int]:fori,numinenumerate(nums):如果target-numinnumsandnums.index(target-num)!=i:return[i,nums.index(target-num)]list.index():说明:index()函数用于从列表中查找某个值第一次出现的索引位置语法:index()方法语法:list.index(x,start,end)参数:x--要搜索的对象。start--可选,要查找的起始位置。end--可选,搜索的结束位置。返回:该方法返回找到对象的索引位置,如果找不到对象则抛出异常。欢迎关注微信。信。民众。公众号:爱写Bug