题解 | #整型数组合并#
整型数组合并
https://www.nowcoder.com/practice/c4f11ea2c886429faf91decfaf6a310b
private static void MergeArrAndSort2(int[] firstArr, int[] secondArr) {
int L = firstArr.length;
int l = 0;
int R = secondArr.length;
int r = 0;
int[] result = new int[L + R];
int index = 0;
//两个数组都排好序
Arrays.sort(firstArr);
Arrays.sort(secondArr);
// 开始放置第一个数,因为第一个数指定不会重复,所以特殊处理
if (firstArr[l] < secondArr[r]) {
result[index++] = firstArr[l++];
} else if (secondArr[r] < firstArr[l]) {
result[index++] = secondArr[r++];
} else {
result[index++] = firstArr[l++];
r++;
}
// 开始循环放置
while (l < L && r < R) {
if (firstArr[l] < secondArr[r]) {
// 重复的不能放
if (result[index - 1] == firstArr[l]) {
l++;
} else {
result[index++] = firstArr[l++];
}
} else if (secondArr[r] < firstArr[l]) {
if (result[index - 1] == secondArr[r]) {
r++;
} else {
result[index++] = secondArr[r++];
}
} else {
// 都相等,那还是要判断重复不重复
if (result[index - 1] != firstArr[l]) {
result[index++] = firstArr[l];
}
// 不管重复不重复,都给我滚到下一个
l++;
r++;
}
}
//有可能有一个数组到了头
//假设是第一个
if (l == L) {
//那我就开始操作第二个
while (r < R) {
if (result[index - 1] != secondArr[r]) {
result[index++] = secondArr[r++];
}
}
} else {
while (l < L) {
if (result[index - 1] != firstArr[l]) {
result[index++] = firstArr[l++];
}
}
}
for (int i = 0; i < index; i++) {
System.out.print(result[i]);
}
}

海康威视公司福利 1409人发布