在向量中查找最长的连续整数

Cap*_*rog 13 matlab vector

我有一个例程,它返回一个整数列表作为向量.

这些整数来自连续数字组; 例如,它可能看起来像这样:

vector = 6 7 8 12 13 14 15 26 27 28 29 30 55 56
Run Code Online (Sandbox Code Playgroud)

请注意,上面有四个"运行"数字(6-8,12-15,26-30和55-56).我想做的是将最长的 "运行"数字转发到新的向量.在这种情况下,这将是26-30运行,所以我想生产:

newVector = 26 27 28 29 30
Run Code Online (Sandbox Code Playgroud)

这个计算必须在不同的向量上执行很多次,所以我能做得越多越好!任何智慧都会被感激地收到.

H.M*_*ter 36

你可以试试这个:

v = [ 6 7 8 12 13 14 15 26 27 28 29 30 55 56];

x = [0 cumsum(diff(v)~=1)];

v(x==mode(x))
Run Code Online (Sandbox Code Playgroud)

这导致了

ans =

    26    27    28    29    30
Run Code Online (Sandbox Code Playgroud)

  • 我想我只是得了一个书呆子 (6认同)
  • 整洁,我再说一遍,整洁. (4认同)