本菜雞看題目第一眼就暗喜,這還不簡單嘛,直接滑窗滑過去,記錄下最大的窗就可以了嗎。視窗左節點在滿足下面兩種條件的情況下,會向後移動。
本次滑窗內的連續陣列和小於等於零
本次滑窗的右節點移動到末尾
直接手擼**如下,輕鬆通過三個測試案例
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 的解法,嘗試使用更為精妙的分治法求解。若採用暴力列舉所...