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

どんなアイデアでも役に立ちます。

4

4 に答える 4

12
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
于 2012-08-22T15:36:45.863 に答える
2
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;
  }
于 2012-08-22T15:35:52.883 に答える