这只返回数组a。我需要做一个等于数组a的数组但是当元素是3的倍数时,我需要添加下一个偶数。像a = [1,3,4,6,1],数组看起来像[1,7,4,6,1]。我该怎么办?谢谢。
public static void main(String[] args) {
int[] a = new int[]{10, 46, 78, 32, 3, 80, 97, 11, 39, 57};
System.out.println(Arrays.toString(a));
}
public static int[] multiplos3 (int[] a){
int[] b = new int[a.length];
int j = 0;
for (int i = 0 ; i < a.length; i++){
if (a[i] % 3 == 0){
if(a[i + 1] % 2 == 0) {
b[j] = a[i] + a[i + 1];
j++;
}
}
}
System.out.println(Arrays.toString(b));
return b;
}
}
基于评论:
public static void multiplos3 (int[] a){
int[] b = new int[a.length]; System.arraycopy(a, 0, b, 0, a.length);
for (int i = 0 ; i < a.length; i++){
if (a[i] % 3 == 0){
for(int j = i + 1; j < a.length; j++){
if(a[j] % 2 == 0) {
b[i] = a[i] + a[j];
break;
}
}
}
}
System.out.println(Arrays.toString(b));
}
............................................... .....
答案 0 :(得分:0)
不要使用a[i + 1]
,而是尝试使用另一个for循环来查找下一个偶数
for(int j = i + 1; j < a.length; j++)
if(a[j] % 2 == 0)
{
[...]
break; //stop the loop after the first even number
}
答案 1 :(得分:-1)
上述代码的运行时复杂度为O(N ^ 2)
首先使用附加数组
,可以在O(N)中实现尝试通过遍历最后一个
来填充下一个偶数数组以下是代码
public static void multiplos3 (int[] a){
int[] b = new int[a.length];
int[] nextEvnNosArr = new int[a.length];
for (int i = a.length - 2; i > 0; i++) {
if (a[i] %2 == 0) {
nextEvnNosArr[i] = a[i];
} else {
if (nextEvnNosArr[i + 1] % 2 == 0) {
nextEvnNosArr[i] = nextEvnNosArr[i+1];
} else {
nextEvnNosArr[i] = -1;
}
}
}
for (int i = 0 ; i < a.length; i++){
if (a[i] % 3 == 0){
if (i != a.length - 1 && nextEvnNosArr[i + 1] != -1){
b[j] = a[i] + nextEvnNosArr[i + 1];
j++;
}
}
}
}
System.out.println(Arrays.toString(b));
}