给定两个随机整数数组,其中每个索引处都有0到9的数字(即每个给定数组的每个索引处都有一个个位数的整数)。我需要找到由输入数组表示的数字的总和,并将结果放入另一个数组中。
我认为我的代码一切正常,因为我已经对不同的数组执行了近50到60次。但是当我将其提交到学校的在线评测系统时,它只接受了4个测试用例,并拒绝了其他两个。我无法弄清楚在哪种情况下它会给出错误的输出。需要一点帮助。
以下是我的代码:
我认为我的代码一切正常,因为我已经对不同的数组执行了近50到60次。但是当我将其提交到学校的在线评测系统时,它只接受了4个测试用例,并拒绝了其他两个。我无法弄清楚在哪种情况下它会给出错误的输出。需要一点帮助。
以下是我的代码:
public static int[] sumOfTwoArrays(int[] arr1, int[] arr2){
int size1 = arr1.length;
int size2 = arr2.length;
int carry = 0,sum,s,r;
if(size1 == size2) {
int arr3[] = new int[size1+1];
for(int i=arr1.length-1;i>=-1;i--) {
if(i==-1) {
arr3[i+1] = carry;
//System.out.println(i+1+" "+arr3[i+1]);
} else {
sum = arr1[i] + arr2[i];
if(sum>9) {
s =sum;
r = s % 10;
arr3[i+1] = carry + r;
carry = 1;
//System.out.println(i+" "+arr3[i]);
} else {
if(sum==9 && carry==1) {
s =sum+carry;
r = s % 10;
arr3[i+1] = r;
} else {
arr3[i+1] = sum+carry;
carry=0;
}
//System.out.println(i+" "+arr3[i]);
}
}
}
return arr3;
} else if (size1>size2) {
int arr3[] = new int[size1+1];
int diff = arr1.length - arr2.length;
for(int i=arr1.length-1;i>=-1;i--) {
if(i==-1) {
arr3[i+1] = carry;
} else {
if(i>=diff) {
sum = arr1[i] + arr2[i-diff];
if(sum>9) {
s =sum;
r = s % 10;
arr3[i+1] = carry + r;
carry = 1;
} else {
if(sum==9 && carry==1) {
s =sum+carry;
r = s % 10;
arr3[i+1] = r;
} else {
arr3[i+1] = sum+carry;
carry=0;
}
}
} // end of diff i
else {
arr3[i+1] = arr1[i];
carry = 0;
}
}
}
return arr3;
} else {
int arr3[] = new int[size2+1];
int diff = arr2.length - arr1.length;
for(int i=arr2.length-1;i>=-1;i--) {
if(i==-1) {
arr3[i+1] = carry;
} else {
if(i>=diff) {
sum = arr2[i] + arr1[i-diff];
if(sum>9) {
s =sum;
r = s % 10;
arr3[i+1] = carry + r;
carry = 1;
} else {
if(sum==9 && carry==1) {
s =sum+carry;
r = s % 10;
arr3[i+1] = r;
} else {
arr3[i+1] = sum+carry;
carry=0;
}
}
} // end of diff i
else {
arr3[i+1] = arr2[i];
carry = 0;
}
}
}
return arr3;
}
}
样例输入:
int[] arr1 = {8,5,3,9,6};
int[] arr2 = {3,3,3,3,3};
输出示例:
{1,1,8,7,2,9}
示例输入:
int[] arr1 = {8,5,3,9,6};
int[] arr2 = {1,0,5};
样例输出:
{0,8,5,5,0,1}
0
真的需要吗?它不应该是{8,5,5,0,1}
吗? - Roland0
,那该怎么办? - Roland