• 【Merge Sorted Array】cpp


    题目:

    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.

    代码:

    class Solution {
    public:
        void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
                int i1 = m-1, i2 = n-1, i = m+n-1;
                while ( i1>=0 && i2>=0 ){
                    if ( nums1[i1]<nums2[i2] ){
                        nums1[i--] = nums2[i2--];
                    }
                    else{
                        nums1[i--] = nums1[i1--];
                    }
                }
                while (i2>=0) nums1[i--] = nums2[i2--];
        }
    };

    tips:

    双指针,从后往前扫描。

    如果最后i1大于等于0则不用处理了;如果最后i2大于等于0,再处理一下。记住。

    ============================================

    第二次过这道题,想起来双指针从后往前扫描了,细节没有记清。改了两次才AC。

    class Solution {
    public:
        void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
                int i1 = m-1;
                int i2 = n-1;
                int i = m+n-1;
                while ( i1>=0 && i2>=0 )
                {
                    if ( nums1[i1]>nums2[i2] )
                    {
                        nums1[i--] = nums1[i1--];
                    }
                    else
                    {
                        nums1[i--] = nums2[i2--];
                    }
                }
                while ( i2>=0 ) nums1[i--] = nums2[i2--];
        }
    };
  • 相关阅读:
    day11课堂小结 函数作用域
    猜年龄函数版day10作业
    函数day10课堂小结
    day07作业
    文件处理day09
    编码day08
    默写
    day07课堂小结
    day06作业
    const与define应用上该怎么取舍
  • 原文地址:https://www.cnblogs.com/xbf9xbf/p/4511882.html
Copyright © 2020-2023  润新知