Java 在数组中查找未使用的值
我正在用Java编写一个函数,以找出数组中第一个可用(未使用)的值。范围是0到999 比如说, {1,3,4,10}->可用0,2,5 {0,1,3,4,10}->可用2,5 我的函数在0不存在时工作。如何使这两种情况都适用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;
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