我有一系列以下值:
X=[1 1 1 2 3 4 1 1 1 1 5 4 2 1 1 2 3 4 1 1 1 1 1 2 2 1]
我想得到数组中所有连续的位置(索引),并构造一个数组,用于保存每组连续零的起始位置和结束位置:
idx= [1 3; 7 10; 14 15; 19 23; 26 26];
我尝试使用以下功能,但我不确定如何实现它:
positionofoness= find(X==1);
find(diff(X==1));
如何构造idx数组??
答案 0 :(得分:2)
您的3 8 5 7 2
和#include <stdio.h>
int a[]={5,8,3,7,2};
void printArray()
{
printf("\nStatus of the array\n");
for(int i=0;i<5;i++)
printf("[%d]",a[i]);
printf("\n");
}
void swap(int x,int y)
{
// printf("%d %d",a[x],a[y]);
a[x]=a[x]+a[y];
a[y]=a[x]-a[y];
a[x]=a[x]-a[y];
}
void maxHeap(int i)
{
int largest=i,right=0,left=0;
left=(2*i)+1;
right=(2*i)+2;
if(a[left] > a[i])
largest=left;
printf("L=%d R=%d",left,right);
if(a[right] > a[i]);
{
printf("\na[right]=%d a[i]=%d",a[right],a[i]);
largest=right;
}
if(largest != i)
swap(largest,i);
}
void main()
{
printArray();
maxHeap(0);
printArray();
}
解决方案几乎就在那里。要查找find
从diff
更改的所有位置,请在开头和结尾填X
{/ 1}}:
1
请注意,每个偶数元素X
表示连续1结束的索引+ 1。
NaN