日leetCodeの質問 - 配列--26--削除重複したエントリは配列をソート

件名の説明:

ソートされた配列を考えると、あなたは、各要素は、配列の新しい長さが取り除かれた復帰後、一度だけ表示されるように繰り返しを削除するには、インプレースアルゴリズムの要素を使用する必要があります。

あなたが入力配列を変更するために、インプレースアルゴリズムを使用する必要があり、完了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;
}
公開された43元の記事 ウォンの賞賛1 ビュー2303

おすすめ

転載: blog.csdn.net/lpl312905509/article/details/104014036