質問の説明
ソートされた配列が与えられた場合、配列から重複要素を削除し、重複要素が1つだけ保持し、新しい配列の長さを返します。
必要とする:
アレイに余分なスペースを割り当てないでください。定数のメモリサイズを使用して所定の位置に動作する必要があります。
例えば:
配列a = [1,1,2]を考えると、関数呼び出しは長さ= 2を返す必要があり、Aは[1,2]になります。
入力
たとえば[1,1,2]などのソートされた配列。
出力
長さ= 2など、アレイの新しい長さを返します。
高速および遅いポインターメソッド
高速ポインターを設定して、配列をトラバースし、非回復要素の次のビットへの遅いポインターを実行します。
public static int removeduplicates(int [] nums){if(nums.length <1)return nums.length; int slow = 1; for(int fast = 1; fast <nums.length; fast ++){if(nums [fast]!= nums [slow -1]){nums [slow ++] = nums [fast]; }}ゆっくりと返す;}アニメーションデモンストレーション:
拡張
ソートされた配列から重複した要素を削除し、指定された数字の数を残します。
public static int removeduplicatesn(int [] nums、int Repeatn){if(nums.length <= repeatn)return nums.length; int index = Repeatn; for(int i = repeatn; i <nums.length; i ++){if(nums [i]!= nums [index -repeatn]){nums [index ++] = nums [i]; }} return index;}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。