最近某人不知是中了什么魔,在LeetCode网站刷算法题,成绩已经很不错了,估计很有成就感,于是一直在我耳边叨叨,说叫我去学习算法,锻炼思维,说的我都耳朵起茧子了。
哎呀,没办法,谁叫我笨呢,于是乎,抱着试一试的态度去网站看了一下,妈呀,全英文……瞬间想放弃。
“什么??就这点英文你就想放弃了?”
“我……”
“这么简单的英文看不懂,你还能干啥,好好做题,顺便还能提高你英语阅读能力呢!!”
“好吧好吧”
于是我就在他的指导下完成了第一道最简单的算法题,规定我一周一道题,难点的两周一题;
下面我就介绍一下我做的第一道算法题,原题如下‘
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
此题打大意就是,给定一个整数列表,再给定一个目标值,找出列表中两个值相加等于目标值的序列,并返回该序列的下标;
左边是题目,右边是你的答案,该网站默认是C++语言,你可以自己选择擅长的语言去写,人家已经创建了类,你只需要补充函数就好了;
Ok,先分析一下这个题目:
1、首先我们想到的问题点是两两相加,相加的话就要用到循环;
2、想到循环,那我们就要看看循环几层,根据题目,我想到最笨的方法就是:
注意:这里的下标都是从0开始的,所以再返回的时候要注意
源码如下:
class Solution(object):
def twoSum(self, nums, target):
for i,v1 in enumerate(nums):
for j,v2 in enumerate(nums[i+1:]):
if v1+v2 == target:
return [i,i+j+1]
nums = [2, 7, 11, 15]
target = 9
sum = Solution()
print(sum.twoSum(nums,target))