matlab怎么找出一串数中的连续的数字
输入:[1 1 2 3 6 7 8 9 10 11 12 14 16 17 19]
输出:[1; [1 2 3]; [ 6 7 8 9 10 11 12]; 14; [16 17]; 19]
我的想法:
- 遍历整个数列
- 一个新的数列用来存放判断连续后的数列
- 条件判断:
- Value(i+1)-Value(i) == 1, list.append(Value(i+1))
- else, list.append(Value(i))
不知道该怎么弄,判断是没问题,但是生成的判断连续数列是有问题的
参考答案:
除了i指示当前遍历到哪里了之外,还设了head,tail两个index来指示找到的连续数列
clc;clear
a = [1 1 2 3 6 7 8 9 10 11 12 14 16 17 19];
b = cell(0,0); %存输出的
num = []; %记录连续数组的长度
ct = 1; %累计数
head = 1; %头
tail = 1; %尾
while(ct<numel(a)) %for ct in len(a):
head = ct;
ct = ct+1; %保证不溢出
while(ct<=numel(a)&&(a(ct)-a(ct-1))==1) %把所有的连续的都找到,然后进入下一个不连续的
ct = ct+1;
end
tail = ct-1;
b = [b;a(head:1:tail)'];%把分割好的连续或不连续的存入b
num = [num; tail-head+1];%记录连续数组的长度
end
if(tail<numel(a)) %当最后一个数是不连续的数的时候,需要单独存一下
b = [b;a(tail+1)'];
num = [num; 1];
end
fprintf('最长的连续数组是:\n')
disp(b{max(num)==num})