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,則說...