LeetCode:面试题 10.01. Sorted Merge LCCI合并排序的数组(C语言)
发布日期:2021-05-08 18:43:39 浏览次数:15 分类:精选文章

本文共 731 字,大约阅读时间需要 2 分钟。

为了将两个已排序的数组 A 和 B 合并成一个有序数组,我们可以按照以下步骤进行:

  • 复制 B 到 A 的后面:将 B 的所有元素复制到 A 的后面,从 A[m] 开始,直到 A[m + n]。
  • 排序整个数组:对整个数组(A 和 B 的组合)进行排序。
  • 这个方法确保了合并后的数组是已排序的。

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

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

    示例:

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

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

    说明:

    A.length == n + m

    解答:

              int cmp(const void *a, const void *b) {          return *(int*)a - *(int*)b;      }      void merge(int* A, int ASize, int m, int* B, int BSize, int n) {          memcpy(A + m, B, sizeof(int) * n);          qsort(A, m + n, sizeof(int), cmp);      }      

    运行结果:代码正确运行后,输出为 [1,2,2,3,5,6]。

    上一篇:LeetCode:343. Integer Break整数拆分(C语言)
    下一篇:LeetCode:647. Palindromic Substrings回文子串(C语言)

    发表评论

    最新留言

    哈哈,博客排版真的漂亮呢~
    [***.90.31.176]2025年04月12日 14时40分15秒