У меня есть массив, который несет некоторые целые числа. Скажем, numbers={3,0,1}
или, скажем, numbers={9,6,4,2,3,5,7,0,1}
. Теперь я должен выяснить пропущенные числа из массива. Согласно этому примеру в каждом наборе есть только одно пропущенное число. 1-й промах 2 и 2-й промах 8.
Я уже написал это. Мой код не только обнаруживает одно пропущенное число из указанного набора, но также может найти более 1 пропущенного числа из заданного набора.
Но если два последовательных числа отсутствуют в одном наборе, это не может быть обнаружено.
My code
import java.util.Arrays;
public class Missing_number
{
public static void main( String args[] )
{
int numbers[]={9,6,4,5,7,0,1};
Arrays.sort(numbers);
int i=1;
while ( i < numbers.length )
{
if ( numbers[i] - numbers[i-1] == 1 )
{
}
else
{
System.out.println( "Missing number is " + ( numbers[i-1] + 1 ) );
}
i++;
}
}
}
Я так думаю, если мне удастся добавить 1-е недостающее число в массив, а затем начать поиск, как будет выглядеть код? numbers={9,6,4,5,7,0,1}
Теперь 8 уже отсутствуют в этом наборе. Теперь я исключил еще два элемента (2,3) из списка. Вывод: согласно моему коду: 2,8 Но 3 также отсутствует, но это не отображается.
Я думаю, что если я смогу добавить 2 в массив чисел, то это может быть немного проще. Но, как мы все знаем, массив Java является неизменным, поэтому мы не можем увеличить его длину.
Так что, возможно, я буду использовать список. Но в списке этот тип индексации number[0]=something
не поддерживается. Так, как я мог продолжить тогда. Я использую список или все еще застрял в массиве?
Поэтому я предпринимаю попытку создать его с помощью arraylist.
Mycode(modified version from array)
public class T1 {
public static void main(String args[]){
List<Integer> numbers=new ArrayList<>();
numbers.add(9);
numbers.add(6);
numbers.add(4);
numbers.add(5);
numbers.add(7);
numbers.add(0);
numbers.add(1);
Collections.sort(numbers);
int i=1;
while(i< numbers.size()) {
if (numbers.get(i) - numbers.get(i-1) == 1) {
} else {
System.out.println("Missing number is " + (numbers.get(i-1) + 1));
numbers.add((numbers.get(i-1)+1));
Collections.sort(numbers);
}
i++;
}
}
}
Arraylist может решить мою проблему. Но есть ли вероятность, что простой массив может решить эту проблему?