这里是新手,也是Java本身的新手。目前正在开展一个小项目,我很难在我目前所处的位置。基本上我的代码有两个数组,将这些数组传递给我的方法。此时我的方法应该查看和比较我的数组,找到HIGHEST common int,在这种情况下,这个程序是10,我希望我的程序然后取10并将它返回到main打印出去,此程序也假设可能没有公共号码,在这种情况下它会打印出-1。到目前为止,这是我的代码。
public class arrayCompare
{
public static void main(String [] args)
{
int [] arrayA = {2, 4, 6 , 8, 10, 12};
int [] arrayB = {3, 4, 7 , 10, 11,13};
int result = largestInCommon(arrayA , arrayB);
}
public static int largestInCommon( int [] A, int[] B)
{
int counter = 0;
for( int x = 0; x < A.length; x++)
{
if(A[0]==B[x])
{
for(int y = 0; y < B.length; y++)
}
}
}
}
答案 0 :(得分:1)
遍历两个数组的所有元素。检查每个元素是否等于另一个元素,并且还高于最后一个元素。如果是,这将是新的更高元素
int[] arrayA = { 2, 4, 6, 8, 10, 12 };
int[] arrayB = { 3, 4, 7, 10, 11, 13 };
int higher = -1;
for (int a = 0; a < arrayA.length; a++) {
for (int b = 0; b < arrayB.length; b++) {
if (arrayA[a] == arrayB[b] && arrayA[a] > higher) {
higher = arrayA[a];
}
}
}
System.out.println(higher);
输出:
10
您的错误是在进入第二个循环之前比较元素。您只检查arrayA[]
中的第一个元素是否也存在于arrayB[]
中且您从未设置并返回新的较高值
答案 1 :(得分:0)
您需要遍历两个数组并检查A[x] == B[y]
和largest>A[x]
是否可以参考以下代码:
public static int largestInCommon(int [] A, int[] B) {
int largest = 0;
for( int x = 0; x < A.length; x++) {
for(int y = 0; y < B.length; y++) {
if(A[x] == B[y] && largest>A[x]) {
largest = A[x];
break;//no need to iterate 2nd array,if common elment found
}
}
}
return largest;
}
答案 2 :(得分:0)
您可以执行以下操作。
您可以在O(sizeA)空间和O(sizeB)时间内完成此操作。 [如果已经排序为O [sizeB * lg(sizeB)]
答案 3 :(得分:0)
public static void main(String [] args)
{
int [] arrayA = {2, 4, 6 , 8, 10, 12};
int [] arrayB = {3, 4, 7 , 10, 11,13};
int result = largestInCommon(arrayA , arrayB);
System.out.println("Max "+result);
}
public static int largestInCommon( int [] A, int[] B)
{
int counter = -1;
for( int x = 0; x < A.length; x++)
{
for(int y = 0; y < B.length; y++){
if(A[x]==B[y])
{
if(counter < A[x]){
counter=A[x];
}
}
}
}
return counter;
}