一.解题思路
思路:主要思路就是用target减去列表中的每一个元素,查看其差值是否在剩余的列表中,如果在则获取下标即可
注意:需要注意的是需要避免重复的情况,例如target:6, nums:[3,3] 正确答案应该是[0,1]或[1,0]而不是[0,0]或[1,1]
二.代码展示
class Solution:
# v1.0版本(后续会优化)
def twoSum(self, nums, target):
# 首先循环列表个数次
for x in range(len(nums)):
# 用target减去当前循环的元素
tmp = target - nums[x]
# 判断相减得到的值是否在列表中
if tmp in nums:
# 在的话就获取下标
y = nums.index(tmp)
# 判断下标是否和当前元素相同,相同则不能采用
if y == x:
continue
return x, y
三.总结其他
总结:这个题通常来说最简单的就是通过暴力算法来做,通过双重循环来使每一个元素与其他元素进行相加,在于target进行比较,相等即可。另外一种做法就是上面这种,这种思路上比较取巧,只需要一次循环就能得到结果。
优化:优化的地方也还有(针对python),就是将存储的列表list转为字典,因为字典的查询效率是远大于list的,但是内存消耗会比list高一些