我有一个数组,其中存储了一些整数。比如说:numbers={3,0,1}
或者numbers={9,6,4,2,3,5,7,0,1}
。现在我要找出数组中缺失的数字。以这个例子为例,每组中只有一个缺失的数字。第一个数组缺失2,第二个数组缺失8。
我已经编写了代码。我的代码不仅可以从指定的数组中找到一个缺失的数字,还可以找到多个缺失的数字。
但是,如果同一个数组中有连续两个缺失的数字,它就无法找到。
My code
import java.util.Arrays;
public class Missing_number
{
public static void main( String args[] )
{
int numbers[]={9,6,4,5,7,0,1};
Arrays.sort(numbers);
int i=1;
while ( i < numbers.length )
{
if ( numbers[i] - numbers[i-1] == 1 )
{
}
else
{
System.out.println( "Missing number is " + ( numbers[i-1] + 1 ) );
}
i++;
}
}
}
我在思考,如果我能将数组中第一个缺失的数字添加进去,然后开始搜索,那么代码会是什么样子呢?numbers={9,6,4,5,7,0,1}
。现在,8已经从这个集合中缺失了。现在我已经终止了列表中的两个元素(2,3)。输出:根据我的代码:2,8,但是3也缺失了,但没有显示。
我在想,如果我能在数字数组中附加2,那可能会更容易一些。但我们都知道Java数组是不可变的,所以我们不能增加它的长度。
因此,也许我会使用List。 但在列表中,这种类型的索引 number[0]=something
不被支持。 那么我该如何继续呢? 我正在使用列表还是仍然卡在数组中?
因此,我尝试用一个ArrayList来创建它。
Mycode(modified version from array)
public class T1 {
public static void main(String args[]){
List<Integer> numbers=new ArrayList<>();
numbers.add(9);
numbers.add(6);
numbers.add(4);
numbers.add(5);
numbers.add(7);
numbers.add(0);
numbers.add(1);
Collections.sort(numbers);
int i=1;
while(i< numbers.size()) {
if (numbers.get(i) - numbers.get(i-1) == 1) {
} else {
System.out.println("Missing number is " + (numbers.get(i-1) + 1));
numbers.add((numbers.get(i-1)+1));
Collections.sort(numbers);
}
i++;
}
}
}
ArrayList可以解决我的问题。但是是否有可能用一个简单的数组解决这个问题呢?
ArrayList
支持索引,对吧? - Kingsleyget(int)
方法而不是下标,将索引作为方法参数。 - Ted Hopp