码迷,mamicode.com
首页 > 编程语言 > 详细

合并有序数组

时间:2015-08-12 19:15:39      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
    if ((nums1.empty() && nums2.empty()) || (!nums1.empty() && nums2.empty())){
        return;
    }
    
    if (nums1.empty() && !nums2.empty()){
        nums1 = nums2;
        return;
    }
    
    vector<int> mergedNums;
    
    auto it1  = nums1.cbegin();
    auto it2  = nums2.cbegin();
    auto end1 = nums1.cbegin() + m;
    auto end2 = nums2.cbegin() + n;
    
    while (it1 != end1 || it2 != end2){
        
        if (it1 == end1 && it2 != end2) {
            mergedNums.push_back(*it2);
            ++it2;
        }
        else if (it1 != end1 && it2 == end2){
            mergedNums.push_back(*it1);
            ++it1;
        }
        else if (*it1 < *it2){
            mergedNums.push_back(*it1);
            ++it1;
        }
        else{
            mergedNums.push_back(*it2);
            ++it2;
        }
    }
    
    nums1 = mergedNums;
}

 

合并有序数组

标签:

原文地址:http://www.cnblogs.com/wuOverflow/p/4725137.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!