美文网首页
88. Merge Sorted Array

88. Merge Sorted Array

作者: 白菜炖豆腐 | 来源:发表于2016-05-12 21:56 被阅读0次

    题目

    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.

    分析

    题目要求给两个已经排好序的数组nums1和nums2,数据量分别为m和n,并且数组nums1的长度>=m+n,要将nums2的数据合并到nums1中
    一开始的想法是建立一个新的数组,然后将数组12的数分别拿出来一一比对,小的放进新数组种,但是题目给的函数并没有返回值,也就是说,不要新建一个数组(但是我觉得新建一个数组,最后将数据复制进nums1应该也是可以的吧),要将数据直接放到数组1中,为了不影响数组1中原来的数据所以我们从尾部开始,也就是从大开始向小排

    循环判断了ia&&ib还有ib,为什么没有判断ia的情况呢,因为ia&&ib为假的情况,要么就是ia已经判断完了,要么是ib判断玩了,因为是直接插入到数组1中的,所以ib判断完了,也就完了,不需要再判断ia

    代码

    class Solution {
    public:
        void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
            int ia=m-1, ib=n-1, iab=m+n-1;
            while(ia>=0 && ib>=0){
                nums1[iab--] = nums1[ia]>nums2[ib] ? nums1[ia--] : nums2[ib--]; 
            }
            while(ib>=0){
                nums1[iab--] = nums2[ib--]; 
            } 
        }
    };
    

    相关文章

      网友评论

          本文标题:88. Merge Sorted Array

          本文链接:https://www.haomeiwen.com/subject/ulmprttx.html