java实现 你有一个含有n个不重复数的数组,现在输出新数组,使得新数组中任意两个数字不差9输出新数组的数字总数,不能用递归实现
时间: 2024-05-01 18:16:20 浏览: 51
Java中如何比较两个数组中元素是否相同
以下是Java实现代码:
```
import java.util.*;
public class Main {
public static void main(String[] args) {
int[] arr = {1, 10, 19, 28, 37, 46, 55, 64, 73, 82, 91};
int[] newArr = new int[arr.length];
int index = 0;
for (int i = 0; i < arr.length; i++) {
boolean flag = true;
for (int j = 0; j < index; j++) {
if (Math.abs(arr[i] - newArr[j]) == 9) {
flag = false;
break;
}
}
if (flag) {
newArr[index] = arr[i];
index++;
}
}
for (int i = 0; i < index; i++) {
System.out.print(newArr[i] + " ");
}
System.out.println();
System.out.println("新数组的数字总数为:" + index);
}
}
```
思路解析:
1. 定义原数组arr和新数组newArr,将newArr初始化为与arr等长的数组。
2. 定义一个变量index,表示新数组中已经存储的数字个数,初始化为0。
3. 遍历原数组arr,对于每个数字,判断它与已经存储在新数组中的数字是否差9,如果差9,则不将该数字加入新数组;否则将该数字加入新数组,并将index加1。
4. 遍历完原数组后,新数组中存储的数字个数即为新数组的数字总数。
5. 输出新数组中的数字和数字总数。
时间复杂度分析:
该算法的时间复杂度为O(n^2),其中n为原数组中的数字个数。因为需要对每个数字都与已经存储在新数组中的数字进行比较,所以时间复杂度较高。
阅读全文