Java 在数组中查找未使用的值

Java 在数组中查找未使用的值,java,algorithm,sorting,Java,Algorithm,Sorting,我正在用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;

我正在用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];  
    } 

 }
}

根据您对问题的描述,
{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");
}
输出:

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

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

[1, 3, 4, 999]
0 2 5 

我不明白你的问题。根据您的0-999范围,您的数组
{1,3,4,10}
中有996个可用数字。你想把它们都打印出来吗?
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