ソートされた配列を考えると NUMS、重複削除 インプレース 重複がほとんどで登場するように、 二回に して、新しい長さを返します。
あなたが入力配列変更することでこれを行う必要があり、別のアレイのための余分なスペースを割り当てない で、場所を O(1)余分なメモリで。
例1:
所与NUMS = [1,1,1,2,2,3]、 あなたの関数は=長さを返すべきである5
の最初の5つの要素と、nums
ある1, 1, 2, 2
それぞれ3。 あなたが返される長さを超えて残すかは重要ではありません。
例2:
所与NUMS = [0,0,1,1,1,1,2,3,3]、 あなたの関数は=長さを返すべき7
最初の7つの要素と、nums
に変更され0
、0、1、1、2、3及びそれぞれ3。 値が返された長さを超えて設定されているかは重要ではありません。
クラスソリューション{ 公共 のint removeDuplicates(INT [] NUMS){ 場合(NUMS == NULL ){ 戻り 0 。 } であれば(nums.length <2 ){ 戻りnums.length。 } INT = 2遅く。 以下のために(INT I 2 =; I <nums.length; I ++ ){ 場合(NUMS [I] = NUMS [遅い- 2!]){ NUMS [遅い ++] = NUMS [I]。 } } リターンスロー; } }