A run は隣接する繰り返される値のシーケンスであることを知っています。たとえば、配列内の最長の run の長さを計算するための疑似コードをどのように記述しますか?
5 は、この整数の配列で最長ランになります。
1 2 4 4 3 1 2 4 3 5 5 5 5 3 6 5 5 6 3 1
どんなアイデアでも役に立ちます。
A run は隣接する繰り返される値のシーケンスであることを知っています。たとえば、配列内の最長の run の長さを計算するための疑似コードをどのように記述しますか?
5 は、この整数の配列で最長ランになります。
1 2 4 4 3 1 2 4 3 5 5 5 5 3 6 5 5 6 3 1
どんなアイデアでも役に立ちます。
def longest_run(array):
result = None
prev = None
size = 0
max_size = 0
for element in array:
if (element == prev):
size += 1
if size > max_size:
result = element
max_size = size
else:
size = 0
prev = element
return result
EDIT
Wow. Just wow! This pseudocode is actually working:
>>> longest_run([1,2,4,4,3,1,2,4,3,5,5,5,5,3,6,5,5,6,3,1])
5
max_run_length = 0;
current_run_length = 0;
loop through the array storing the current index value, and the previous index's value
if the value is the same as the previous one, current_run_length++;
otherwise {
if current_run_length > max_run_length : max_run_length = current_run_length
current_run_length = 1;
}