件名の説明:
ソートされた配列を考えると、あなたは、各要素は、配列の新しい長さが取り除かれた復帰後、一度だけ表示されるように繰り返しを削除するには、インプレースアルゴリズムの要素を使用する必要があります。
あなたが入力配列を変更するために、インプレースアルゴリズムを使用する必要があり、完了O以下の(1)追加の条件を使用して、スペースの余分な配列を使用しないでください。
例:
所与のアレイNUMS = [1,1,2]
新しい関数は、2の長さを返す必要があり、元の配列の最初の2つの要素は、1,2- NUMSに変更されます。
int removeDuplicates(int * nums, int numSize)
{
if (numSize == 0) return 0;
int count = 1;
for (int i = 0; i < numSize - 1; i++)
{
if (nums[i] != nums[i + 1])
nums[count++] = nums[i + 1];
}
return count;
}
int main()
{
int arr[] = {1,2,2,3,3,5,5};
int count = removeDuplicates(arr, sizeof(arr) / sizeof(arr[0]));
printf("%d\n",count);
for (int i = 0; i < count; i++)
{
printf("%d\t",arr[i]);
}
printf("\n");
system("pause");
return 0;
}