Python3 力扣演算法題 持續更新)

2021-09-27 06:03:58 字數 2474 閱讀 9562

1.兩數之和

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

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

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

因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]

class

solution

:# 解題思路:使用字典模擬雜湊表

deftwosum

(self, nums, target)

:hash

=for i,num in

enumerate

(nums):if

hash

.get(target-num)

isnot

none

:return

[i,hash

.get(target-num)

]hash

[num]

= i

2.和為k的子陣列
給定乙個整數陣列和乙個整數 k,你需要找到該陣列中和為 k 的連續的子陣列的個數。

示例 1 :

輸入:nums = [1,1,1], k = 2

輸出: 2 , [1,1] 與 [1,1] 為兩種不同的情況。

說明 :

陣列的長度為 [1, 20,000]。

陣列中元素的範圍是 [-1000, 1000] ,且整數 k 的範圍是 [-1e7, 1e7]。

class

solution

:def

subarraysum

(self, nums: list[

int]

, k:

int)

->

int:

hash=#

sum=

0 count =

0for i in

range

(len

(nums)):

sum+= nums[i]

count +=

hash

.get(

sum-k,0)

#hash

.setdefault(

sum,0)

hash

[sum]+=

1#return count

3.乘積最大子串行
給定乙個整數陣列 nums ,找出乙個序列中乘積最大的連續子串行(該序列至少包含乙個數)。

示例 1:

輸入: [2,3,-2,4]

輸出: 6

解釋: 子陣列 [2,3] 有最大乘積 6。

class

solution

:#動態規劃方法

defmaxproduct

(self, nums: list[

int])-

>

int:

premax = nums[0]

premin = nums[0]

res = nums[0]

for i, item in

enumerate

(nums[1:

]): curmax =

max(premax*item, premin*item, item)

curmin =

min(premax*item, premin*item, item)

res =

max(curmax, res)

premax = curmax

premin = curmin

return res

classa:

defsolution

(self, n:array, m)

: premax =

0 premin =

0 res =

0for i in

range

(n*(n-1)

/2):

for i in

range

(m):

a = random.choice(n)

b = random.choice(n)

sum+= a*b

curmax =

max(premax, premin,

sum)

curmin =

min(premax, premin,

sum)

res =

min(curmin, res)

premax = curmax

premin = curmin

return res

力扣演算法題

給定乙個整數陣列 nums 和乙個整數目標值 target,請你在該陣列中找出 和為目標值 的那 兩個 整數,並返回它們的陣列下標。但是,陣列中同乙個元素不能使用兩遍。思路一 暴力列舉 將陣列中的每個元素都拿來與後面的元素逐一相加,然後與目標值作比較,如果正確則直接返回下標值。那麼,就會有最壞的情況...

力扣演算法題

題目描述如下 羅馬數字包含以下七種字元 i,v,x,l,c,d 和 m。字元 數值 i 1 v 5 x 10 l 50 c 100 d 500 m 1000 例如,羅馬數字 2 寫做 ii 即為兩個並列的 1。12 寫做 xii 即為 x ii 27 寫做 xxvii,即為 xx v ii 通常情況...

力扣 2 兩數相加 Python3

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