4月30天leetcode訓練 Day3

2021-10-23 04:41:14 字數 1508 閱讀 4791

#動態規劃方法

class

day3_solution_1

:def

__init__

(self,nums)

: self.nums = nums

defmaxsubarray

(self)

:#考慮情況1:如果陣列中全是負數,則最大的和為其中的最大的數字:

ifmax

(self.nums)

<0:

return

max(self.nums)

#情況2:陣列中有正有負:

currsum = restsum = self.nums[0]

for n in self.nums[1:

]:currsum =

max(n,currsum + n)

restsum =

max(currsum,restsum)

return restsum#時間複雜度為o(n);空間複雜度為o(1)

class

day3_solution_2

:def

__init__

(self,nums)

: self.nums = nums

defhelps

(self,nums,left,right)

:if right <= left:

return nums[left]

mid =

(right + left)//2

lmax = self.helps(nums,right,mid -1)

rmax = self.helps(nums,mid +

1,left)

mmax = nums[mid]

suml = restl =

0for i in

range

(mid -

1,left -1,

-1):

suml += nums[i]

restl =

max(suml,restl)

sumr = restr =

0for i in

range

(mid +

1,right +1)

: sumr += nums[i]

restr =

max(sumr,restr)

return

max(restr + restl + nums[mid]

,max

(lmax,rmax)

)def

maxsubarray

(self):if

len(self.nums)==0

:return

right =

len(self.nums)-1

left =

0return self.helps(self.nums,left,right)

4月30天leetcode訓練 Day15

給定乙個由n個整數組成的陣列,其中n 1,則返回乙個陣列輸出,使得output i 等於除nums i 之外的所有nums元素的乘積。example input 1,2,3,4 output 24,12,8,6 不考慮時間複雜度的話,通過遞迴暴力破解,設定遞迴輔助函式,傳入陣列和開始,結束位置。開始...

4月30天leetcode訓練 Day16

給了乙個2維陣列,裡面是由1和0組成。規則是這樣的,1代表陸地,0代表海水,讓我們尋找小島,那小島肯定有乙個特點,被水隔離,連續的陸地組成一塊小島,而本題中連續的定義為上下左右相鄰 不包括對角線 基於這樣的規則讓我們找尋有幾個島。example 1 input 11110 11010 11000 0...

4月30天leetcode訓練 Day27

given a 2d binary matrix filled with 0 s and 1 s,find the largest square containing only 1 s and return its area.從乙個二維矩陣中找出最大的正方形面積 正方形裡面都是1才合法 input ...