利用python求陣列中連續k個相同值的最大的k

2021-09-30 13:35:39 字數 713 閱讀 5515

例如,對於乙個陣列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...