题解 | #整型数组合并#

整型数组合并

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#
全部评论

相关推荐

11-04 19:05
已编辑
东莞城市学院 单片机
不知道怎么取名字_:你这个要实习两年?哪有这么久的,感觉就是即使你毕业了,但还按实习的话,是不是不用给你缴社保公积金啥的
点赞 评论 收藏
分享
10-28 10:48
已编辑
门头沟学院 Java
孩子我想要offer:发笔试后还没笔试把我挂了,然后邮箱一直让我测评没测,后面不知道干嘛又给我捞起来下轮笔试,做完测评笔试又挂了😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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