【发布时间】:2021-11-18 04:23:28
【问题描述】:
问题陈述:在数组中查找缺失的数字 给你一个从 1 到 n 的正数数组,这样从 1 到 n 的所有数字都存在,除了一个数字 x。你必须找到x。输入数组未排序。查看下面的数组并在检查解决方案之前尝试一下。
3,7,1,2,8,4,5 n = 8 缺少数字 = 6
我尝试了我的解决方案,但没有运气。基本上,我不确定如何退出递归函数调用
{
public static void main(String[] args)
{
int[] array={3,7,1,2,8,4,5};
int i=1;
int missingItem=array[0]+1;
System.out.println(checkMissingItem(array,i,missingItem));
}
public static int checkMissingItem(int [] array,int j,int mitem)
{
// System.out.println(array.length);
for(int x=0;x< array.length;x++)
{ if(mitem>array.length)
{
mitem=array[j]+1;
j=j+1;
checkMissingItem(array,j,mitem);
}
if(mitem==array[x])
{
mitem=array[j]+1;
j=j+1;
if(j==array.length)
{
return mitem;
}else
checkMissingItem(array,j,mitem);
}
}
return mitem;
}
}```
【问题讨论】:
-
你为什么不排序?
-
另一种方法:前n个自然数之和为
n*(n+1)/2。你可以从这个预期的总和中减去实际的总和,得到缺失的数字。 -
为什么要使用递归来解决这个问题?您希望它如何提供帮助?用您自己的话来说,代码是如何一步一步地工作的?
标签: java arrays recursion search review