算法重温第1天,一起冲呀,everybody!!!🌈
题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例1:
输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例2:
输入:nums = [3,2,4], target = 6 输出:[1,2]
示例3:
输入:nums = [3,3], target = 6 输出:[0,1]
提示:
2 <= nums.length <= 104
-109 <= nums[i] <= 109
-109 <= target <= 109
- 只会存在一个有效答案
程序代码 :
class Solution(object):
find_flag = False
def twoSum(self, nums, target):
for i in range(len(nums) - 1):
if (not self.find_flag):
for j in range(i+1, len(nums)):
if int(nums[i]) + int(nums[j]) == int(target):
return ([i, j])
self.find_flag = True
break
else:
break
程序分析
之前学过算法与数据分析,但是,最近忘得差不多了,做这种题,第一感觉就是暴力枚举。暴力枚举很浪费资源,运算量达O(n²),脑袋里也没其他好的办法了,那就这个吧。由于题目中提到了,只有一种答案,所以只要找到答案返回即可,而且列表中的数只能使用一次,所以,两层循环中j的范围在 (i+1,end) 之间,我还用到了一个标志位,用来判断是否找到目标,如果找到目标就结束循环,会节省一部分资源。如果要在leetcode网站刷题,一定要注意书写的格式,它只需要提供函数,核心代码即可,写完整的会报错。好了,算法重温第1天,就到这了。