如何在Java中查找整数数组中缺少的数字?
我无法在Java中找到解决方案。我需要编写一段代码,其中包含一个整数n和一个整数数组,该数组中的数字最多为n(有些可能缺失),该方法将打印出缺失的数字 例:{2;3;5;1;2;3}应该打印出4,6 编辑:这是我从评论建议中得到的,但它似乎不起作用。我做错了什么如何在Java中查找整数数组中缺少的数字?,java,arrays,Java,Arrays,我无法在Java中找到解决方案。我需要编写一段代码,其中包含一个整数n和一个整数数组,该数组中的数字最多为n(有些可能缺失),该方法将打印出缺失的数字 例:{2;3;5;1;2;3}应该打印出4,6 编辑:这是我从评论建议中得到的,但它似乎不起作用。我做错了什么 public static void findMissingNum(int n, int[]a) { boolean A[] = new boolean[n]; for(int i = 0;
public static void findMissingNum(int n, int[]a) {
boolean A[] = new boolean[n];
for(int i = 0; i < a.length; i++) {
A[a[i]] = true;
}
for(int j = 0; j < A.length; j++) {
if (A[j] = false) {System.out.print(A[j]);}
}
}
publicstaticvoidfindmisingnum(int n,int[]a){
布尔A[]=新布尔[n];
对于(inti=0;i
我以前见过这个问题被用作家庭作业或测验题,这个问题要求你使用一个。为列表中的每个数字创建一个大小为n
的空布尔数组,并将数组[num]
设置为True
。循环新数组,并记录所有的False
,您可以提前知道应该有多少个实例。我以前见过这被用作家庭作业或测验题,这个问题要求您使用一个。为列表中的每个数字创建一个大小为n
的空布尔数组,并将数组[num]
设置为True
。循环新数组,并记录False
的所有实例,您可以提前知道应该有多少实例。尝试用Java实现此解决方案:
A=[0,…,n]
。使用false
值初始化它将i=0转换为长度(inputArray):A[inputArray[i]]:=true
false
,这些是您要返回的值尝试用Java实现此解决方案:
A=[0,…,n]
。使用false
值初始化它将i=0转换为长度(inputArray):A[inputArray[i]]:=true
false
,这些是您要返回的值以下几点应该起作用:
public void find() {
Scanner s = new Scanner(System.in);
int[] nums = {2, 3, 5, 1, 2, 3};
int n = s.nextInt();
boolean[] included = new boolean[n+1];
for(int i = 0; i < nums.length; i++) included[nums[i]] = true;
for(int z = 0; z < included.length; z++) {
if(included[z] == false) System.out.print(z+ ",");
}
}
public void find(){
扫描仪s=新的扫描仪(System.in);
int[]nums={2,3,5,1,2,3};
int n=s.nextInt();
布尔值[]包含=新布尔值[n+1];
对于(int i=0;i
这将打印出所有缺失的数字,包括n(如果缺失)。如果不包括n,则执行new boolean[n]
它的工作方式是首先使用扫描器读取您的int n。它有两个数组,一个包含数字的int数组和一个作为一组标志的布尔数组。布尔数组被初始化为n的大小。然后它在nums数组中循环,查看数组中包含哪些数字。如果包含该数字,则布尔arary中的该数字元素将标记为true。最后,它循环遍历flags/boolean数组,如果该标志处的元素为true,则不执行任何操作,因为它已经存在,否则如果它为false(表示不包含#),则打印它 以下方法应该有效:
public void find() {
Scanner s = new Scanner(System.in);
int[] nums = {2, 3, 5, 1, 2, 3};
int n = s.nextInt();
boolean[] included = new boolean[n+1];
for(int i = 0; i < nums.length; i++) included[nums[i]] = true;
for(int z = 0; z < included.length; z++) {
if(included[z] == false) System.out.print(z+ ",");
}
}
public void find(){
扫描仪s=新的扫描仪(System.in);
int[]nums={2,3,5,1,2,3};
int n=s.nextInt();
布尔值[]包含=新布尔值[n+1];
对于(int i=0;i
这将打印出所有缺失的数字,包括n(如果缺失)。如果不包括n,则执行new boolean[n]
它的工作方式是首先使用扫描器读取您的int n。它有两个数组,一个包含数字的int数组和一个作为一组标志的布尔数组。布尔数组被初始化为n的大小。然后它在nums数组中循环,查看数组中包含哪些数字。如果包含该数字,则布尔arary中的该数字元素将标记为true。最后,它循环遍历flags/boolean数组,如果该标志处的元素为true,则不执行任何操作,因为它已经存在,否则如果它为false(表示不包含#),则打印它 List
然后,您可以创建一个从1到n的数组,按顺序排列所有数字,并遍历其元素,检查每个元素是否包含,如果不包含,则将其添加到另一个missingValues列表中。list
然后,您只需创建一个从1到n的数组,所有数字都按顺序排列,然后遍历其元素,检查列表中是否包含每个元素,如果不包含,则将其添加到另一个missingValues列表中。数组中的元素是否按顺序排列?数组中是否已经有空元素用于缺少的#s?我认为您应该开始阅读一些Java教程(如果您知道Java基础知识,请转到数组)否,例如{2;3;5;1;2;3}应该打印出4,6@RSTAnce把它加到身体上我知道数组的基本知识,正是这个特殊的问题让我停滞不前,我找不到任何参考或方法,甚至接近它数组中的元素是按顺序排列的吗?数组中是否已经有空元素用于缺少的#s?我认为您应该开始阅读一些Java教程(如果您知道Java基础知识,请转到数组)否,例如{2;3;5;1;2;3}应该打印出4,6@RSTAnce把它加到身体上我知道数组的基本知识,正是这个具体的问题让我停滞不前,我无法找到任何与之接近的参考或方法