随笔- 102  文章- 41  评论- 1  阅读- 11万 

题目:

合并两个排序的整数数组A和B变成一个新的数组。

 

你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素。

解答:

倒过来进行添加,正着添加可能需要移位,会比较麻烦

 

    1. class Solution {
      public:
      /**
      * @param A: sorted integer array A which has m elements, 
      * but size of A is m+n
      * @param B: sorted integer array B which has n elements
      * @return: void
      */
      void mergeSortedArray(int A[], int m, int B[], int n) {
      // write your code here
      int pos = m + n - 1;
      int posA = m - 1;
      int posB = n - 1;
      while (posA >= 0 && posB >= 0) {
      if (A[posA] > B[posB]) {
      A[pos--] = A[posA--];
      } else {
      A[pos--] = B[posB--];
      }
      }
      while (posA >= 0) {
      A[pos--] = A[posA--];
      }
      while (posB >= 0) {
      A[pos--] = B[posB--];
      }
      }
      };

       
 posted on   做个快乐的自己  阅读(177)  评论(0编辑  收藏  举报
编辑推荐:
· 在.NET Core中使用异步多线程高效率的处理大量数据
· 聊一聊 C#前台线程 如何阻塞程序退出
· 几种数据库优化技巧
· 聊一聊坑人的 C# MySql.Data SDK
· 使用 .NET Core 实现一个自定义日志记录器
阅读排行:
· 字节豆包,来园广告
· 为什么推荐在 .NET 中使用 YAML 配置文件
· 订单超时自动取消,我们是这样做的。。。
· 在 .NET Core 中使用 Channel 实现生产者消费者模式
· C#字符串拼接的几种方式及其性能分析对比
点击右上角即可分享
微信分享提示