leecode 兩數之和的四種方法

2021-09-26 20:08:08 字數 1871 閱讀 1947

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

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

class solution:

def twosum( sself,nums, target):

""":type nums: list[int]

:type target: int

:rtype: list[int]

"""i=0

j=1for num1 in nums:

i=i+1

j=ifor num2 in nums[j:]:

j=j+1

if num1+num2==target:

return [i-1,j-1]

這種方法最容易想到,兩個for迴圈就可及解決,但是時間複雜度太高,leecode沒給過

解法2:

但是時間長,記憶體占用多

解法3:

這裡利用了字典來查詢,速度提公升很大,與雜湊表的原理有關

class solution:

def twosum(self,nums,target):

""":type nums: list[int]

:type target: int

:rtype: list[int]

"""dict1 = {}

for i, num in enumerate(nums):

dict1[num] = i # 調換乙個順序

for i, num in enumerate(nums):

j=dict1.get(target-num)

if j!=none and i!=j :

return [i,j]

關於enumerate函式

效果如下:

class solution:

def twosum(self,nums,target):

""":type nums: list[int]

:type target: int

:rtype: list[int]

"""dict1 = {}

for i, num in enumerate(nums):

j=dict1.get(target-num)

if j!=none and j!=i:

return[j,i]

dict1[num] = i # 調換乙個順序。在後面防止字典鍵值有重複

這個就只用到了乙個迴圈

但效果、、、

leecode 兩數之和

第一種 暴力法 class solution throw newillegalargumentexception no two sum solution 時間複雜度 o n 2 空間複雜度 o 1 第二種 利用hash表提高時間效率 class solution for int i 0 i nums...

LeetCode1 兩數之和(四種解法)

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

Leecode 1 兩數之和

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