leetcode刷題筆記 兩數相加 1

2021-09-24 03:28:49 字數 1295 閱讀 6461

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。

你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。

示例:給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

解題思路:

從最簡單的遍歷兩次陣列nums實現目的,但這樣輸出結果儘管正確,計算時間卻溢位了,因此需要優化。

我的解決方法是:僅遍歷一次全陣列,第二次遍歷的時候,直接省去已經遍歷過的陣列元素。雖然結果最終通過了,但是演算法的複雜度仍然為o(n^2)。很撈

class

solution

(object):

deftwosum

(self, nums, target)

: len_nums =

len(nums)

for index_1 in

range

(len

(nums)):

for index_2 in

range

(index_1+

1,len_nums):if

(nums[index_1]

+ nums[index_2]

== target)

:return index_1,index_2

看了討論區發現了一種複雜度僅為o(n)的方法。很高階,記下來。

若將陣列中和滿足條件的兩個元素看作「匹配」,則這種方法利用了字典來儲存「未匹配的單個元素的值與索引」,enumerate能返回list中元素的值及其索引,僅僅需要遍歷一遍陣列nums,就可以找出符合條件的兩個值。

class

solution

:def

twosum

(self, nums, target)

: hashmap =

for index, num in

enumerate

(nums)

: another_num = target - num

if another_num in hashmap:

return

[hashmap[another_num]

, index]

hashmap[num]

= index

return

none

LeetCode刷題筆記 兩數相加

給你兩個 非空 的鍊錶,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 1 輸入 l1 2,4,3 l2 5,6,4 輸出 7,0,8 ...

LeetCode刷題筆記 兩數之和

題目描述 兩數之和 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nu...

LeetCode Python刷題 1 兩數相加

題目 給定乙個整數陣列nums和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 返回 0,1 為了測試 是否重複利用陣列元...