Spurs

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

88. Merge Sorted Array

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.

Note:
You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.

默认了升序.
重点是在数组尾部插入元素:int i = m - 1, j = n - 1, k = m + n - 1;
还有就是A中元素若比B多,就不管了,A中元素们都在正确位置,但若B元素多需赋值到A中, 这点处理需注意.

\(O(n)\) time, \(O(1)\) space.
照葫芦画瓢代码:

void merge(vector<int>& A, int m, vector<int>& B, int n) {
    int i = m - 1, j = n - 1, k = m + n - 1;
    while (i >= 0 & j >= 0)
        A[k--] = A[i] > B[j] ? A[i--] : B[j--];

    while (j >= 0) //A多不管,元素在正确位置,B多得管
        A[k--] = B[j--];
}
posted on 2017-08-14 11:52  英雄与侠义的化身  阅读(80)  评论(0编辑  收藏  举报