题解 | #整型数组合并#
整型数组合并
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]); } }#华为OD#

