2016-04-28 13 views
0

1.開始要素とarraylistの制限を持つ整数配列リストを持っています。 例[5,6,9,10]javaを使用して指定されたシーケンス配列リスト内の欠落している要素を見つける方法?

2.欠落している要素とその位置を繰り返し検索する必要があります。 上記の例によれば、私の出力は番号7(position3)、番号8(position4)は欠落しているはずです。

3.現在、不足している要素を取得する代わりに、すべての数値が印刷されています。以下は

はコードです:

public static List<Integer> issue_ret=new ArrayList<>(); 
    Iterator<Integer> iter = issue_ret.iterator(); 
     while(iter.hasNext()){ 
      int value = iter.next(); 
      if("1".equals(value)){ 
       iter.remove(); 
      } 
      else{ 
       System.out.println("Missing value:"+value); 
      } 
     } 

誰も私がこれを解決するのに役立つことはできますか?

+0

あなたは 'String'を' Integer'と比較しており、毎回同じ値です。なぜこれはうまくいくのですか? – shmosel

+0

申し訳ありません、私は変更され、動作します –

答えて

1

はあなたArrayList.contains()よりも効率的な方法を提案するが、より限定された:

ArrayList<Integer> list = new ArrayList<>(Arrays.asList(new Integer[]{5, 6, 9, 10})); 

    int head = list.get(0); 
    int tail = list.get(list.size() - 1); 

    int length = tail - head + 1; 
    int[] array = new int[length]; 

    for (int i : list) { 
     array[i - head] = 1; 
    } 

    for (int i = 0; i < array.length; i++) { 
     if (array[i] == 0) { 
      System.out.println(String.format("Missing %d, position %d", i + head, i + 1)); 
     } 
    } 

制限がある:トップ整数の数が多すぎるべきではありません。とにかく、使用するかどうかは実際のニーズによって異なります。space for time

+0

大変ありがとうございます。 –

+0

それは私を助けてくれました。 –

1

あなたは代わりに、あなたのリストから最初の要素を開始してから1ずつ増加し、このカウンタとの比較を行いますカウンタを維持する必要があります1

if("1".equals(value)) 

ですべての要素を比較しています。あなたは、配列の開始と終了を知ることができて、その制限を超えて反復によってあなたは数字が以下のように欠けているものを得ることができ、配列から最初と最後の要素を取得することによって

0

てみてください、

List<Integer> integerList = new LinkedList<Integer>(); 
integerList.add(5); 
integerList.add(6); 
integerList.add(9); 
integerList.add(10); 
int first = integerList.get(0); 
int last = integerList.get(integerList.size()-1); 
for(int i=first+1; i<last; i++){ 
    if(!integerList.contains(i)) 
      System.out.println("Number Not in List : "+i); 
} 
0

は:

List<Integer> input = new ArrayList<Integer>(); 
    input.add(5); 
    input.add(8); 
    int firstElement = input.get(0); 
    int lastElement = input.get(input.size()-1); 
    for(int i=firstElement+1, j=2; i<lastElement-1; i++,j++){ 
     if(!input.contains(i)) 
       System.out.println("Missing Number : "+i + "(position " + j+")"); 
    } 

最初の要素と最後の要素がすでに最後に存在していることを既に知っているので、最初の要素と最後の要素の間にのみ要素が存在するかどうかを確認する必要はありません。

+0

ありがとうございます、しかし、整数リストは何ですか? –

+0

llavarasan更新されました。今すぐ確認してください。 Ms. Ziaさん、更新をありがとう。 – proudandhonour

関連する問題