我知道有人问过类似的问题并且我已经研究过
许多网站。我尝试使用一些答案,但我的代码是
还是行不通。
我正在完成之前的作业以帮助积累知识
爪哇。请原谅我的代码中的任何错误,我仍在学习中
爪哇。
这是我的问题:
实现一个 merge 方法,给定两个已排序整数元素数组,返回一个新的已排序数组,其中包含两个输入数组的所有元素。
假设两个输入数组中的元素均按非降序排序(例如 [0, 1, 2, 2] 和 [1, 2, 3, 3, 4, 5])。返回的“合并”数组必须保留此属性(例如 [0, 1, 1, 2, 2, 2, 3, 3, 4, 5])。
输入和输出都允许重复。
如果其中一个数组为空,则返回非空数组作为副本,如果两个数组都为空,则结果也应该为空。
效率要求:数组应该在一次遍历数组中合并。
这是我到目前为止所做的,它不符合要求,所以我需要帮助才能找到正确的解决方案:
public class MergeArray {
public static int[] merge(int[] arr1, int[] arr2) {
if (arr1 == null && arr2 == null) {
return null;
}
if (arr1 != null & arr2 == null) {
return arr1;
}
if (arr2 != null & arr1 == null) {
return arr2;
}
int[] merged = new int [arr1.length+arr2.length];
if (arr1.length > arr2.length) {
for (int i = 0; i < arr1.length; i++) {
if (arr1[i] <= arr2[i]) {
merged[i] = arr1[i];
merged[i + 1] = arr2[i];
}
if (arr2[i] < arr1[i]) {
merged[i] = arr2[i];
merged[i + 1] = arr1[i];
}
}
if (arr1.length < arr2.length) {
for (int i = 0; i < arr2.length; i++) {
if (arr1[i] <= arr2[i]) {
merged[i] = arr1[i];
merged[i + 1] = arr2[i];
}
if (arr2[i] < arr1[i]) {
merged[i] = arr2[i];
merged[i + 1] = arr1[i];
}
}
}
}
return merged;
}
}