“Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。”
一、题目描述:
在给定的一组整数数组 nums 和一个整数值 target,需要我们从数组中找到两个元素之和等于目标值 target的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。
二、思路分析:
先理解题目,nums数组里存在两数之和的值为target。换个思路来想,也就是只要num1在nums中,而target - num1也在nums中即可,这里,我们将target - num1 定义为num2.
也就是说num2 在 nums中,就是对的。这里面我们可以用到循环来遍历列表,然后判断num2是不是在nums中即可。
但是在实际运行中,因为数据类型的原因,导致执行的时候出了一些错误,我们要将数据类型转化成整型才可进行四则运算。
三、AC 代码:
nums = input("请输入nums:")
nums = list(nums)
target = input("请输入target:")
lens = len(nums)
j=-1
for i in range(lens):
if (target - nums[i]) in nums:
if (nums.count(target - num[i])==1)&(target - nums[i] == nums[i]):
continue
else:
j = nums.index(target - nums[i],i+1)
break
if j>0:
return[i,j]
else:
return[]
在执行的时候,遇到了一些问题,是因为数据类型的原因。
这时我们要将str改成Int即可,
我们在这儿用的方法就加上下面这句话,它将nums中的元素全转化为整型。
nums = [int(i) for i in nums]
nums = input("请输入nums:")
nums = list(nums)
nums = [int(i) for i in nums]
target = input("请输入target:")
target = int(target)
lens = len(nums)
j=-1
for i in range(lens):
if (target - nums[i]) in nums:
if (nums.count(target - num[i])==1)&(target - nums[i] == nums[i]):
continue
else:
j = nums.index(target - nums[i],i+1)
break
if j>0:
return[i,j]
else:
return[]
我们输入数组[1,2,3] ,目标值为3,可以知道在数组0,1位置之和为3