ソートされた配列を考えると、あなたはそれぞれの要素が削除され、配列の新しい長さを戻した後、一度だけ表示されるように、所定の位置に繰り返し要素を削除する必要があります。
配列のための余分なスペースを使用しないでください、あなたは代わりに入力配列を変更し、使用のO(1)余分なスペースの条件の下で完了しなければなりません。
例えば:NUMS = [0,0,1,1,1,2,2,3,3,4]を考えると、
新しい関数は、長さ5を返す必要があり、元の配列NUMSの最初の5つの要素は0、1、2、3、4に変更されます。
あなたは、新しい配列の長さの背後の要素を超えて検討する必要がありません。
パイソン
クラスソリューション: デフremoveDuplicates(自己、NUMS): もしNUMS: 0 =遅い ()1、lenは(NUMS)速い範囲のために: もしNUMS [速い] = NUMS [遅い]:! 遅い+ = 1 NUMS [遅いです] = NUMS [速い] 1 +スローリターン 他: リターン0
C ++
INT removeDuplicates(ベクトル<整数>&NUMS){ IF(nums.size()<2)リターンnums.size()。 int型J = 0; 以下のために(; I <nums.size(); int型私は1 = I ++) の場合NUMS [++ J] = NUMS [I](NUMS [j]は= NUMS [i]が!)。 ++ Jを返します。 }