Leetcode 陣列之和系列

2021-10-07 23:12:40 字數 1833 閱讀 4407

leetcode 1. 兩數之和

方法1:排序+查詢

方法2:雜湊法

class

solution

:def

twosum

(self, nums: list[

int]

, target:

int)

-> list[

int]

:sum=0

m =for i in

range

(len

(nums)):

sum= nums[i]

if target -

sumin m.keys():

return

[m[target -

sum][0

],i]

ifsum

in m.keys():

m[sum]

+=[i]

else

: m[

sum]

=[i]

leetcode 15. 三數之和

這道題其實跟上一題乙個思路,先減去乙個數不就是兩數之和了嗎

排序 + 雙指標,可拓展為target為任意值

class

solution

:def

threesum

(self, nums: list[

int]

, target)

-> list[list[

int]]:

nums.sort(

) res =

for i in

range

(len

(nums)-2

):if nums[i]

> target:

break

elif i >

0and nums[i]

== nums[i -1]

:continue

else

: l = i +

1 r =

len(nums)-1

tmp = target - nums[i]

while l < r:

if nums[l]

> tmp:

break

elif nums[l]

== nums[l -1]

: l +=

1continue

elif r <

len(nums)-1

and nums[r]

== nums[r +1]

: r -=

1continue

if nums[l]

+ nums[r]

> tmp:

r -=

1elif nums[l]

+ nums[r]

< tmp:

l +=

1else

:[nums[i]

, nums[l]

, nums[r]])

l +=

1 r -=

1return res

時間複雜度:o(n

2)

o(n^2)

o(n2

)空間複雜度:o(n

log(

n)

)o(nlog(n))

o(nlog

(n))

排序

陣列之和系列

給出乙個陣列,求其中三個數之和為零的集合 examples input 1,0,1,2,1,4 output 1,0,1 1,1,2 一開始嘗試的很多方法,想bsp回溯,雙指標移動等等,都沒有用,複雜度都是o n 最後想到了以前程式設計書上的二分法,在這裡也是發篇文章記錄下怕自己忘記 class s...

LeetCode系列 1 兩數之和

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

LeetCode系列 1 兩數之和

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