説明
のみ0 0 1の場合それでは、二つに同じ順序に0を置くれる配列を与え、余分なビットを直接廃棄
例を
[1,0,1] => [1,0,0]
[001010] => [000010]
O(N)のO(n)の空間の複雑さの時間複雑
思考
新しい配列を開くために使用することは、出会い1,1が充填されているスキャン遭遇0 00が充填されています。
コード
#include<stdio.h>
int main()
{
int array[] = {0,0,1,0,1,0};
int length = 6;
int countZero = 0;
for(int i=0;i<length;i++)
{
if(array[i]==0)
countZero++;
}
//一个变两个 多一位
int newArrayLegth = length;
int newArray[length];
int newArrayIndex=0;
for(int i=0;i<length;i++)
{
if(newArrayIndex == length)
break;
if(array[i]==0)
{
newArray[newArrayIndex++]=0;
newArray[newArrayIndex++]=0;
}else
{
newArray[newArrayIndex++]=1;
}
}
for(int i=0;i<length;i++)
{
printf("%d ",newArray[i]);
}
}