2017-11-05 5 views
0

ソートされた配列から重複する値を削除しようとしています。 ここに私のコードです。ソートされた配列の重複を削除して理解してください

public static int remove (int[] nums, int n) { 
     int count = 0; 
     for(int i = 1; i < n; i++){  
      //tried to print out here 
      if(nums[i] == nums[i-1]) count++; 
      else nums[i-count] = nums[i]; 
     } 
     return n-count; 
    } 

私の配列は{1, 2, 2, 3, 4, 4, 4, 5, 5}です。

変数の値を印刷して、どのように動作するのか理解できました。最初のループ反復では、IF条件if i = 1の前に、なぜnumb[i]の値が2になっていますか?

ありがとう

+0

「Javascriptループ」の単純なgoogle検索では、あなたの答えが得られました。質問を投稿する前に、常に基本的な調査を行う – CodyBugstein

答えて

2

配列はJava(および多くの他の言語)ではゼロベースなので、配列はゼロベースです。 nの配列のインデックスは{ 0, 1, 2, ..., n-1 }となるため、配列の最初の要素から開始すると、array[0]となります。

しかし、あなたはそれの前にある要素で各要素をチェックしているので、もちろんこれをやりたいとは思わない。あなたのループでi0で開始された場合、例外が発生します。

+0

が表示されます。ありがとう!私はまだ学んでいて、時には混乱しています。 – Hiro

関連する問題