ソートされた配列の重複を削除します
タイトルには
、並べ替えられた配列を指定する必要があります。配列内の繰り返される要素を削除する必要があります。各要素は1回だけ表示され、新しい配列の長さが返されます。スペースの複雑さはO(1)です。 高速と低速の2つの添え字を使用する
という考え方
です。高速のものは各要素をトラバースするために使用され、低速のものは新しい配列の添え字を記録するために使用されます。トラバースされる要素がない場合は、遅い添え字。同じでない場合は、同じ新しい配列に保存します。速い配列は、元の配列がトラバースされるまでトラバースを続けます。
コード
int removeDuplicates(int* nums, int numsSize){
int p = 0;
if (numsSize < 2)
{
return numsSize;
}
for (int i = 1; i < numsSize; i++)
{
if (nums[p] != nums[i])
{
p++;
nums[p] = nums[i];
}
}
return p + 1;
}