Java 如何从两个数组中找到奇数元素
我有一个数组Java 如何从两个数组中找到奇数元素,java,arrays,Java,Arrays,我有一个数组 int a[] = {1,2,3}; int b[] = {1,2}; 如何在数组中找到奇数元素为每个数组项创建一个循环。那些item&1==1是奇数。如果你谈论的是集合比较,请看 int[] longArray = { 1, 3, 2 }; int[] shortArray = { 1, 2 }; //Check which array is longer, if b longer than a then swap boolean found
int a[] = {1,2,3};
int b[] = {1,2};
如何在数组中找到奇数元素为每个数组项创建一个循环。那些
item&1==1
是奇数。如果你谈论的是集合比较,请看
int[] longArray = { 1, 3, 2 };
int[] shortArray = { 1, 2 };
//Check which array is longer, if b longer than a then swap
boolean found = false;
int odd = 0;
for (int i : longArray) {
for (int j : shortArray) {
if (i == j)
found = true;
}
if (!found)
odd = i;
found = false;
}
System.out.println(odd);
这个问题是从集合接口的角度来讨论的,但是列表接口也继承了集合中的相关方法,所以将数组复制到ArrayList对象会很容易
如果希望将其完全保留在本机阵列级别,可能需要执行以下操作:
public int[] findOddElement(int[] fromArray, int[] secondArray){
int[] result = new int[fromArray.length];
int resPointer = 0;
for (int i = 0;i < fromArray.length;i++){
boolean notFound = true;
for (int j = 0; j < secondArray.length; j++) {
if (fromArray[i] == secondArray[j]) {
notFound = false;
break;
}
}
if (notFound){
result[resPointer] = fromArray[i];
resPointer++;
}
}
if (resPointer > 0 && resPointer < fromArray.length ) {
int[] newResult = new int[resPointer];
for (int i = 0;i < resPointer; i++) {
newResult[i] = result[i];
}
return newResult;
}
return result;
}
public int[]findOddElement(int[]fromArray,int[]secondArray){
int[]结果=新的int[fromArray.length];
int应答者=0;
for(int i=0;i0&&应答器
我在投票中给出了两个答案,前面的答案是嵌套循环,对于很长的数组可能比较慢。在下一个解决方案中,有些人可能不喜欢树集。可能,您的意思是项目%2==1它是一个输入错误,我的意思是
&
,而不是%
。您的问题是不连贯的,第二个数组是干什么的?确定您正在寻找一个提示来查找奇数(1,3,5,…)还是别的什么?我想他是在比较这两个数组,找出它们之间唯一的数字。因此,根据他的例子,答案必须是3…这是对odd的奇怪定义,-1表示问题海报的极端惰性。ArrayList不实现Set接口。列表不扩展Set接口。列表和集合是集合接口的两个不同扩展。是的,我的错:XOR讨论中使用的功能由集合接口的集合和列表继承。Edited answer.hey我尝试使用List而不是set,但是我得到了运行时异常IndexOutofBoundException异常发生在remove方法中,因为如果你传入int(这里就是这种情况),它会接受一个“索引”,如果你想像set中那样使用remove,那么你需要传递一个对象,比如Integer,但在这种情况下它将不起作用,因为整数(1)=整数(1)。回到要点,列表允许重复。但事实并非如此。因此,除了“删除实现”之外,由于存在重复项,您最好还是坚持使用集合。这是行不通的!如果奇数元素出现在较短的数组中,它将如何找到它?
int[] longArray = { 1, 3, 2 };
int[] shortArray = { 1, 2 };
//Check which array is longer, if b longer than a then swap
for (int x:longArray){
set.add(x);
}
for (int x:shortArray){
if (set.contains(x))
set.remove(x);
}
//odd numbers
for (Object i:set.toArray())
System.out.println(i+",");