Java 查找数组中缺少的元素
我的程序是:在一个数组中,存储1-10个数字,缺少一个数字,你怎么找到它 我尝试了下面的代码,但没有给出正确的输出Java 查找数组中缺少的元素,java,Java,我的程序是:在一个数组中,存储1-10个数字,缺少一个数字,你怎么找到它 我尝试了下面的代码,但没有给出正确的输出 public class MissingNumber { public static void main(String[] args) { int arr[] = { 1, 2, 3, 4, 5, 6, 7, 9, 9, 10 }; System.out.println(arr.length); int arr2[] =
public class MissingNumber {
public static void main(String[] args) {
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 9, 9, 10 };
System.out.println(arr.length);
int arr2[] = new int[10];
for (int i = 0; i < arr2.length; i++) {
arr2[i] = i + 1;
System.out.println("second array is : " + arr2[i]);
}
//compare two arrays i.e arr and arr2
for(int a=0;a<arr.length;a++){
for(int b=0;b<arr2.length;b++){
if(arr[a]==arr2[b]){
break;
}
else{
System.out.println("missing element is : "+arr[a]);
}
}
}
}
}
公共类丢失编号{
公共静态void main(字符串[]args){
int arr[]={1,2,3,4,5,6,7,9,9,10};
系统输出打印长度(arr.length);
int arr2[]=新int[10];
for(int i=0;i 对于(int a=0;a当两个数组匹配时,您将从循环中中断。从您的逻辑角度来看,将其更改为(您不需要嵌套循环):
但如果确定数组从1开始始终按顺序排列,则不需要另一个数组。只需按照以下步骤操作:
for(int x=0; x<arr.lengthl x++){
if(arr[x] != (x+1)){
System.out.println("Missing element is " + (x+1));
break;
}
}
for(int x=0;x当您找到正确的匹配项时,您刚刚破坏了代码:
只需使用以下命令:
if(arr[a] != arr2[b]){
System.out.println("missing element is : "+arr[a]);
break;
}
或者用continue替换break删除第二个数组,您不需要它,并且在向原始数组添加元素后可能会导致错误
基本上,将测试替换为:
if(arr[a] != (a+1)){ System.out.println("Missing element: " + (a+1)); }
不要打断它,因为可能会丢失更多的元素。它不起作用,因为您正在arr
中循环寻找任何不在arr2
中的值,而arr
中的每个元素都在arr2
中。您希望arr2
作为外循环
我的程序是:在一个数组中,存储1-10个数字,缺少一个数字,你怎么找到它
也可以只使用数组本身来完成。请注意,只有当这个问题中指定的某个数字缺失时,它才起作用
比如说,
设数组为Array={1,2,3,4,5,6,7,9,9,10}
现在,让我们假设数组并不总是被排序的,因此第一步是对数组进行排序
Arrays.sort(array);
下一步是简单地检查数组在任何给定位置的值,如果值!=location+1
,那么这就是缺少的数字
for(int x = 0; x < array.length; x++) {
if(array[x] != x + 1) {
System.out.println("Missing Entry: " + (x+1));
break;
}
}
for(int x=0;x
检查下面的代码,查看输入数组是否为任意顺序或无序排列
公共类丢失号{
public static void main(String[] args) {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 9, 9, 10};
System.out.println(arr.length);
int arr2[] = new int[10];
for (int i = 0; i < arr2.length; i++) {
arr2[i] = i + 1;
}
for (int a = 0; a < arr2.length; a++) {
int count = 0;
for (int b = 0; b < arr.length; b++) {
if (arr2[a] == arr[b]) {
break;
} else {
count++;
}
}
if (arr2.length == count) {
System.out.println("missing element is : " + arr2[a]);
}
}
}
publicstaticvoidmain(字符串[]args){
int arr[]={1,2,3,4,5,6,7,9,9,10};
系统输出打印长度(arr.length);
int arr2[]=新int[10];
for(int i=0;i
}为什么不只是:if(arr[a]!=(a+1))?它可以工作。谢谢!@naazneen3264问题不清楚,你甚至不需要一个循环就可以找到“丢失的”数字。你的数组总是从1开始,并且应该以递增的顺序排列吗?是的。我后来意识到。它不起作用。但第二部分起作用了。事实上,我拿了两个数组,试图找到丢失的元素。卡斯帕:在什么情况下,你认为这条打印线会到达?是的,在我写下它后的第二秒我意识到:p
public static void main(String[] args) {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 9, 9, 10};
System.out.println(arr.length);
int arr2[] = new int[10];
for (int i = 0; i < arr2.length; i++) {
arr2[i] = i + 1;
}
for (int a = 0; a < arr2.length; a++) {
int count = 0;
for (int b = 0; b < arr.length; b++) {
if (arr2[a] == arr[b]) {
break;
} else {
count++;
}
}
if (arr2.length == count) {
System.out.println("missing element is : " + arr2[a]);
}
}
}