leetcode 動態規劃 53

2022-10-09 07:33:09 字數 1091 閱讀 2599

本菜雞看題目第一眼就暗喜,這還不簡單嘛,直接滑窗滑過去,記錄下最大的窗就可以了嗎。視窗左節點在滿足下面兩種條件的情況下,會向後移動。

本次滑窗內的連續陣列和小於等於零

本次滑窗的右節點移動到末尾

直接手擼**如下,輕鬆通過三個測試案例

nums = [-2,1,-3,4,-1,2,1,-5,4]

left,right = 0,0

temp = nums[0:1]

res = nums[0]

# res = 1

n = len(nums)

while left <= n :

if right >= n:

left += 1

right = left

# print('第乙個')

if res < 0:

left += 1

right = left

# print('第二個')

temp = nums[left : right + 1]

if temp == :

break

res = max(res,sum(temp))

right += 1

print(res)

點選提交,沒想到後台直接給了個長度1w的陣列讓跑,直接顯示測試超時。還是乖乖看題解去吧

不得不說,真是妙的很。思路很清晰,找到了狀態轉移方程。首先定義f(i)為以i結尾的最大連續陣列和。i遍歷一遍得到f(i)組成的陣列,再從中找到最大值即可。其中,f(i)轉移的方程為f(i)=max. (白手起家也不要接之前的爛攤子)

class solution:

def maxsubarray(self, nums: list[int]) -> int:

n = len(nums)

temp = [nums[0],]

for i in range(1,n):

return max(temp)

動態規劃 leetcode 53

0 python資料結構與演算法學習路線 學習內容 給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。輸入 nums 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6 1 不可避免的是要遍歷陣列,所以先寫...

leetcode53 簡單動態規劃

給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。class solution else ans math.max ans,sum retur...

leetcode 53 最大子段和 動態規劃

給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。高階 如果你已經實現複雜度為 o n 的解法,嘗試使用更為精妙的分治法求解。若採用暴力列舉所...