Исходя из вашего описания проблемы, вывод для {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