我正在用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
答案 0 :(得分:0)
根据您对问题的描述,{1,3,4,10}
的输出应该是{0,2,5,11}
,范围是0到999,不是吗?
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