2016-04-07 9 views
-1

与えられたintの配列に対して、すべての要素を出力するプログラムを書く必要がありますが、各値は繰り返しは1回だけです。それは私の家庭教師です。私はここにいくつかの例があることに同意しますが、特別な条件があります:配列から数値を削除する

補助配列、コレクションまたは文字列を作成しないでください!

標準のjava.lang以外のパッケージからクラスを使用しないでください。私はそう遠くないので、ここでのJavaを勉強してきた

は、私がやったことです:int型の最小値を印刷することができませんので

public class Third { 

    public static void main(String[] args) { 
     int[] p = {5, 2, 2, 5, -1, 5, 12, 2, 5, 44, 12, 9}; 
     remove(p); 
    } 

    static public void remove(int[] a) { 

     int min = Integer.MIN_VALUE; 

     for (int i = 0; i < a.length; i++) { 
      for (int j = i + 1; j < a.length; j++) { 
       if (a[i] == a[j]) { 
        a[i] = min; 
       } 
      } 
     } 

     for (int j = 0; j < a.length; j++) { 
      if (a[j] != min) { 
       System.out.println(a[j]); 
      } 
     } 

    } 

} 

私は、これは効率的ではないことを実現します。それで、それを正しく行うための他の方法はありますか?

+0

基本的に重複を削除したいのですか?最小値の問題は、仕様が不足していることです。空のスペースについてはどうしますか?彼らは2つ以上ある場合、重複する必要がありますいくつかの値を持つ必要があります... –

+0

コメントに詳細を入れないでください。代わりにあなたの質問を更新してください。 – GhostCat

答えて

0

あなたは一度だけ、配列の要素を印刷したいのですが、あなたはそれを達成するために、任意の構造体または他の配列を使用することはできません、私はあなたの最善の戦略は、単に、アレイをスキャンし、持つ要素を探すことであると考えていると言ったので、インデックスからの同じ値。前方が見つからない場合にのみ印刷します。例えば

:あなたが最初5を見たとき、あなたは何も印刷されませんので、配列{5, 2, 2, 5, -1, 5, 12, 2, 5, 44, 12, 9}のために、あなたはあなたの右に3つのファイブが表示されますが、あなたはその第四5を見て、そこに'LLあなたはそれを印刷します。たとえば、-1が表示されたら、右に-1が表示されず、印刷されます。

public static void main(String[] args) { 
    int[] p = {5, 2, 2, 5, -1, 5, 12, 2, 5, 44, 12, 9}; 
    remove(p); 
} 

static public void remove(int[] a) { 
    for (int i = 0; i < a.length; i++) { 
     boolean found = false; 
     for (int j = i + 1; j < a.length; j++) { 
      if (a[i] == a[j]) { 
       found = true; 
       break; 
      } 
     } 
     if (!found) 
      System.out.println(a[i]); 
    } 

} 

そして、あなたのアレイの出力は次のようになります。

-1 
2 
5 
44 
12 
9 

すべての要素が唯一の私は解決策を提供していますここにあなたの質問に基づいて、一度

+0

ありがとう、あなたは私の質問に答えました! – cemicel

0

を印刷しています。この最初の私は昇順でarrayをソートしています。それが次のインデックスa[i+1]と等しくなければ、私は現在のインデックスa[i]を印刷しています。

プログラム:

int a[] = { 5, 2, 2, 5, -1, 5, 12, 2, 5, 44, 12, 9}; 
     int temp = 0; 

     for (int i = 0; i < a.length; i++) { 

      for (int j = i; j < a.length; j++) 
       if (a[i] > a[j]) { 
        temp = a[i]; 
        a[i] = a[j]; 
        a[j] = temp; 

       } 

     } 

     for (int i = 0; i < a.length - 1; i++) { 
      if (a[i] != a[i + 1]) { 
       System.out.println(a[i]); 
      } 
      if (i == a.length - 2) 
       System.out.println(a[i + 1]); 

     } 

出力:

-1 
2 
5 
9 
12 
44 

は、それはあなたを助けることを願っています。

関連する問題