Leetcode刷題兩數求和(簡單)

2021-10-12 08:04:30 字數 1139 閱讀 3331

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

你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。

我的思路挺簡單的,兩個for迴圈。第一次在這個**刷題,除了和ccf題輸入輸出有些不同,感覺有點彆扭外,感覺這個**刷題很棒!還有官方給出答案,可以學到很多東西!

class solution:

def twosum(self, nums: list[int], target: int) -> list[int]:

for i in range(len(nums)):

for j in range(i,len(nums)):

if nums[i]+nums[j]==target and i!=j:

return[i,j]

return

這題還是比較簡單的,之所以記錄下來,是因為官方給出了另乙個解法,用雜湊降低了時間複雜度,從o(n2)降到了o(n),但是空間複雜度從o(1)變為了o(n)。**如下:

class solution:

def twosum(self, nums: list[int], target: int) -> list[int]:

hashtable = dict()

for i, num in enumerate(nums):

if target - num in hashtable:

return [hashtable[target - num], i]

hashtable[nums[i]] = i

return

2.首先,雜湊表是用來儲存key-value鍵值對的集合,而python中的內建資料型別字典就是用雜湊表實現的。for i, num in enumerate(nums):這句用的秒,enumerate()函式是用來列舉,這個既可以得到數又可以得到數的下標。然後這個字典是將值作為key,值對應的下標作為value,輸出的是value,即下標。這個真的很好用!

說明:

leetCode刷題 兩數之和

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

leetcode刷題 兩數相加

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...

leetCode刷題 兩數之和

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