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;cleara = [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;endtail = ct-1;b = [b;a(head:1:tail)'];%把分割好的连续或不连续的存入bnum = [num; tail-head+1];%记录连续数组的长度endif(tail<numel(a)) %当最后一个数是不连续的数的时候,需要单独存一下b = [b;a(tail+1)'];num = [num; 1];endfprintf('最长的连续数组是:\n')disp(b{max(num)==num})
