件名の説明:
配列NUMSと値valを考えると、あなたはすべて同じ値valを削除するために要素を配置する必要があり、除去後の配列の長さを返します。
配列のための余分なスペースを使用しないでください、あなたは代わりに入力配列を変更し、使用のO(1)余分なスペースの条件の下で完了しなければなりません。
例1:
所与NUMS = [3,2,2,3]、ヴァル= 3
関数は、2の新しい長さを返す必要がありますし、最初の2つの要素のNUMSは2です。
例2:
所与NUMS = [0,1,2,2,3,0,4,2]、ヴァル= 2
新機能は、長さ5と第1の5 NUMS要素を返す必要があります0,1,3,0,4
これらの5つの要素は任意の順序であることに注意してください
あなたは新しい長さの長さの裏を超えた配列の要素を考慮する必要はありません。
int removeElement(int arr[],int len,int val)
{
int count = 0;
for (int i = 0; i < len; i++)
{
if (arr[i] != val)
{
arr[count++] = arr[i];
}
}
return count;
}
int main()
{
int arr[] = {0,1,2,2,3,0,4,2};
int count = removeElement(arr, sizeof(arr)/sizeof(arr[0]), 3);
printf("%d\n",count);
for (int i = 0; i < count; i++)
{
printf("%d\t",arr[i]);
}
printf("\n");
system("pause");
return 0;
}