例如,對於乙個陣列a=
(a1,
a2,.
..,a
n),我們想知道使得ai
=ai+
1=..
.=ai
+k=x
的最大k 是多少,最笨的辦法是我們需要做兩層迴圈:
# 這裡假設x=1
aaa = [1, 1, 0, -1, 1, 1, 1, -1, -1, -1, -1, 0, 0]
len_a = len(aaa)
max_group = 1
for i in range(len_a):
first = aaa[i]
if first != 1:
continue
for j in range(i+1, len_a):
if aaa[j] != first:
if max_groupbreak
print(max_group)
但其實,python裡可以一行**實現上面的功能:
import itertools
aaa = [1, 1, 0, -1, 1, 1, 1, -1, -1, -1, -1, 0, 0]
max_group = max([len(list(j)) for i,j in itertools.groupby(aaa) if i==1])
求陣列中連續k個數最大值
變式題求數列中第k大的數 前k大問題 給定乙個長度為n陣列,求每個連續k個數的最大值,複雜度要求o n log k 解釋 例如陣列為 1,3,2,4,5 k 2,則連續k個數的區間有 1,3 3,2 2,4 4,5 每個區間的最大值分別為3,3,4,5,所以輸出3,3,4,5 include usi...
求陣列中連續子陣列的最大和
思路 計算出任意i到j之間連續子陣列的和再比較必然能得到最大值,但時間複雜度為o n 2 我們希望能找出線性時間的演算法。我們注意到,假如陣列中全為正數,那麼最大和必然為全部數相加 如果陣列中有負數,並且如果加上某個負數,子陣列的和小於0,則最大和子陣列必然不包含這個負數。基於此,給出以下 incl...
求陣列中任何連續子向量之和
我們有乙個陣列,裡面包含 10個元素 31,41,59,26,53,58,97,93,23,84 如何求出裡面最大的連續子向量之和呢?該程式應該輸出下標為x 2,6 之間的和,187為最大。當所有數是正數的時候,問題很容易解決,但是如果包含了負數,可就難了。有乙個迭代演算法,採用動態規劃的思想 ma...