LeetCode14|合并排序的数组

时间:2022-07-23
本文章向大家介绍LeetCode14|合并排序的数组,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1,问题简述

给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。编写一个方法,将 B 合并入 A 并排序。

初始化 A 和 B 的元素数量分别为 m 和 n。

2,示例

输入:
A = [1,2,3,0,0,0], m = 3
B = [2,5,6],       n = 3

输出: [1,2,2,3,5,6]

3,题解思路

比对数组A和数组B的元素大小,用新数组装填这些元素,最后直接使用函数进行复制元素到数组A中。

4,题解程序

 
public class MergeTest {
    public static void main(String[] args) {
        int[] A = {1, 2, 3, 0, 0, 0};
        int m = 3;
        int[] B = {2, 5, 6};
        int n = 3;
        merge(A, m, B, n);
        for (Integer num : A
        ) {
            System.out.print(num + "t");
        }
    }

    public static void merge(int[] A, int m, int[] B, int n) {
        int[] result = new int[m + n];
        int i = 0;
        int j = 0;
        int pos = 0;
        while (i < m && j < n) {
            result[pos++] = A[i] < B[j] ? A[i++] : B[j++];
        }
        while (i < m) {
            result[pos++] = A[i++];
        }
        while (j < n) {
            result[pos++] = B[j++];
        }
        System.arraycopy(result, 0, A, 0, result.length);
    }
}

5,总结,这道题也是属于以往做过的内容,最近整理出来的这些题算是回顾一下过往的内容,谈不上新颖的地方,但是自己在梳理一下做过的内容,对自己而言增进了一些感触和思考还是有点作用的,作为java的一名后端开发者而言,以往写过的内容都帮助了自己很多,自己也比较喜欢这方面的总结,所以谈不上刻意去做,所以这方面自己在说其它也没有意义了。