最近某人不知是中了什麼魔,在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))