【发布时间】:2015-03-07 19:03:18
【问题描述】:
我有两个这样的数组。
String[] arr1 = { "1", "2", "3" };
String[] arr2 = { "111", "222", "333", "444", "555", "666", "777", "888", "999" };
我想使用索引值的组合来合并这两个数组。
我的输入将是两个整数值(2:3 比例),像这样
int firstArray = 2; //input value
int secondArray = 4; //input value
合并后,所有值将存储在单个列表中。现在我需要这样的输出。
1
2
111
222
333
444
3
1
555
666
777
888
2
3
999
111
222
333
循环应该一直运行到哪个数组长度很大,并从两个数组中检索所有值。
如果数组长度改变了,那么输出比率也应该改变
String[] arr1 = { "1", "2", "3", "4", "5", "6", "7", "8" };
String[] arr2 = { "111", "222", "333", "444", "555" };
int firstArray = 3; //input value
int secondArray = 2; //input value
输出:
1
2
3
111
222
4
5
6
333
444
7
8
1
555
111
所以条件是输出应该包含数组中的所有值,直到数组的最大长度和输出应该以第二个比率完成(第二个输入值 - secondArray)。
提前致谢。
String[] arr = mergeArrays(arr1, arr2, 2, 3);
System.out.println("Ratio 2:3");
for (String str : arr) {
System.out.println(str);
}
private static String[] mergeArrays(String[] arr1, String[] arr2, int firstArray, int secondArray) {
final String[] ret = new String[arr1.length + arr2.length];
for (int j = 0, k = 0; j < arr1.length || k < arr2.length;) {
if (j < arr1.length) {
do {
ret[j + k] = arr1[j];
j++;
} while (j < arr1.length && (j % firstArray != 0 || k == arr2.length));
}
if (k < arr2.length) {
do {
ret[j + k] = arr2[k];
k++;
} while (k < arr2.length && (k % secondArray != 0 || j == arr1.length));
}
}
return ret;
}
我从这个solution尝试过
但我无法正确输出
【问题讨论】:
标签: java arrays list sorting linked-list