男友教我學算法(一) Two Sum

最近某人不知是中了什麼魔,在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))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章