演算法兩數之和 python版

2022-03-15 04:27:36 字數 702 閱讀 9995

方法

一、暴力解法 -- 5s

複雜度分析:時間複雜度:o(n^2)空間複雜度:o(1)

length = len(nums)

for i in range(length):

for j in range(i + 1, length):

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

return [i, j]

方法二:利用python切片 - 1s

複雜度分析:時間複雜度:o(n)空間複雜度:o(1)

解題關鍵主要是想找到 num2 = target - num1,是否也在list中,其實原理跟2次遍歷一樣

for i in range(len(nums)):

if target-nums[i] in nums[i+1:]:

return [i, nums.index(target-nums[i], i+1)]

方法三:雜湊 -- 80ms

複雜度分析:時間複雜度:o(n)空間複雜度:o(n)

直接雜湊記錄需要的key,遍歷到就是找到需要的值:

dic = {}

for i, num in enumerate(nums):

if num in dic:

return [dic[num], i]

else:

dic[target - num] = i

python演算法 兩數之和

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。獲取數值長度 for m in range lens for x in range lens x m 1...

python演算法(8 14) 兩數之和

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

演算法 兩數之和,三數之和

給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 leetcode 思路 兩層for迴圈時間複雜度是o ...