题解 | #整型数组合并#

整型数组合并

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]);
        }
    }

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务