Найти неиспользуемые значения в массиве - PullRequest
0 голосов
/ 21 сентября 2018

Я пишу функцию на Java, чтобы узнать первые доступные (не используемые) значения в массиве.Диапазон составляет от 0 до 999.

Например,

{1,3,4,10} -> доступно 0,2,5

{0, 1,3,4,10} -> доступно 2,5

Моя функция работает, когда 0 отсутствует.как заставить работать в обоих случаях?

public class Values{

 public static void main(String []args){
     int myArrray[] = {0,1,3,4,10};
     int temp = 0;
     int index = 0;
     int available = 0;
    for (int i = 0; i < myArrray.length; i++) 
    { 
        if(temp == 0 && myArrray[i] != temp ){
        available =  temp;
        System.out.println("value of temp: " + temp);
        System.out.println("value of available time: " + available);
        System.out.println("value of index: " + i);                
        }
        else if(myArrray[i] - temp > 1 ){
        available =  temp + 1;
        temp = available;
        System.out.println("value of temp: " + temp);
        System.out.println("value of available time: " + available);
        System.out.println("value of index: " + i);
       }
       else{

       }
     temp = myArrray[i];  
    } 

 }
}

результат

-value of temp: 0 
-value of available time: 0
-value of index: 1
-value of temp: 2
-value of available time: 2
-value of index: 2
-value of temp: 5
-value of available time: 5
-value of index: 4

1 Ответ

0 голосов
/ 21 сентября 2018

Исходя из вашего описания проблемы, вывод для {1,3,4,10} с диапазоном от 0 до 999 должен быть {0,2,5,11} не так ли?

static void available(int[] arr, int min, int max)
{
  for (int j=0, i=0; j<=max; j=arr[i]+1, i++)
  {
    if (j >= min && (i==arr.length || j < arr[i]))
      System.out.printf("%d ", j);
    if(i == arr.length) break;
  }
  System.out.println("\n");
}

Тест:

public static void main(String[] args)
{
  int[][] tests = {
      {1,3,4,10},
      {0,1,3,4,10},
      {1,3,4,999},
  };

  for(int[] test : tests) 
  {
    System.out.println(Arrays.toString(test));
    available(test, 0, 999);
  }
}

Выход:

[1, 3, 4, 10]
0 2 5 11 

[0, 1, 3, 4, 10]
2 5 11 

[1, 3, 4, 999]
0 2 5 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...