每日一題 最大子序和

2021-10-12 17:02:22 字數 1035 閱讀 5960

給定乙個整數陣列 nums ,找到乙個具有最大和的連續子陣列(子陣列最少包含乙個元素),返回其最大和。

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

輸出: 6

解釋: 連續子陣列 [4,-1,2,1] 的和最大,為 6。

如果你已經實現複雜度為 o(n) 的解法,嘗試使用更為精妙的分治法求解。

from functools import

reduce

class

solution

:def

maxsubarray

(self, nums)

: len_nums =

len(nums)

sum= nums[0]

for i in

range

(len_nums)

:for j in

range(1

, len_nums - i)

:# print('i:{},j:{}'.format(i, j))

new_list = nums[i:i + j +1]

num =

reduce

(lambda x, y: x + y, new_list)

if num >

sum:

sum= num

nums.sort(

)if nums[-1

]>

sum:

sum= nums[-1

]return

sumif __name__ ==

'__main__'

: li =[-

2,1,

-3,4

,-1,

2,1,

-5,4

] res = solution(

).maxsubarray(li)

print

(res)

備註:

此解法超出了時間限制,還需繼續優化

每日一題 最大子序和

這道題雖然是簡單題,但我覺得很有趣,o n 的思路其實很簡單 從第乙個元素開始,如果當前元素超過從頭到當前所有元素之和,那麼就把當前元素作為第乙個元素繼續遍歷 class solution def maxsubarray self,nums list int int n len nums curr ...

Leedcode 每日一題 最大子序和

給定乙個整數陣列nums,找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6解釋 連續子陣列 4,1,2,1 的和最大,為 6。提交 動態規劃,最基本的題,dp陣列代表該以該位置結尾的子串行的最大和 class soluti...

每日一題 LeetCode之最大子序和

給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。思路 遍歷陣列,用sum表示連續子陣列的和,當sum大於0時,說明當前數字前面若干個連續的數...