最大子陣列

2021-10-22 07:45:24 字數 1447 閱讀 7626

import math

# 暴力

defforce

(array:

list):

""" 暴力取得最大子陣列

:param array: 引數陣列

:return: 最大的連續和

"""for i in

range

(len

(array)):

max_num = array[i]

for j in

range

(i+1

,len

(array)):

ifsum

(array[i:j+1]

)> max_num:

max_num =

sum(array[i:j+1]

) array[i]

= max_num

return

max(array)

# 分治

defmid_func

(mid, array:

list):

""" 跨越中值的最大連續和

:param mid: 中值索引

:param array: 陣列

:return: 最大連續子陣列的和

"""max_num = sum_array = array[mid]

for num in array[mid+1:

]:sum_array += num

if sum_array > max_num:

max_num = sum_array

sum_array = max_num

for num in

reversed

(array[

:mid]):

sum_array += num

if sum_array > max_num:

max_num = sum_array

return max_num

defdevide_func

(array:

list):

""" 使用分治方法求最大連續陣列和

:param array: 引數陣列

:return: 最大的和

"""iflen

(array)

>2:

mid = math.floor(

len(array)/2

)return

max(devide_func(array[

:mid]

), devide_func(array[mid+1:

]), mid_func(mid, array)

)else

:return

max(

max(array)

,sum

(array)

)

最大子陣列

1.問題描述 問題 乙個有n個整數元素的一維陣列 a 0 a 1 a 2 a n 1 這個陣列中子陣列之和的最大值是多少?該子陣列是連續的。例如 陣列 1,2,3,5,3,2 返回8 陣列 0,2,3,5,1,2 返回9。網上有稱之為最大子串行和,亦有稱連續子陣列最大和。個人覺得叫最大子串行和不太妥...

最大子陣列

給定乙個整數陣列,找到乙個具有最大和的子陣列,返回其最大和。樣例1 輸入 2,2,3,4,1,2,1,5,3 輸出 6 解釋 符合要求的子陣列為 4,1,2,1 其最大和為 6。樣例2 輸入 1,2,3,4 輸出 10 解釋 符合要求的子陣列為 1,2,3,4 其最大和為 10。要求時間複雜度為o ...

最大子陣列

給定乙個整數陣列,找到乙個具有最大和的子陣列,返回其最大和。樣例給出陣列 2,2,3,4,1,2,1,5,3 符合要求的子陣列為 4,1,2,1 其最大和為6 注意子陣列最少包含乙個數 挑戰要求時間複雜度為o n 1 假設前k個數的和sum已經計算出來 2 對於第k 1個數來說,如果sum 0,則說...