zoukankan      html  css  js  c++  java
  • leecode第八十八题(合并两个有序数组)

    class Solution {
    public:
        void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
            if(n==0)
                return;
            if(m==0)
            {
                for(int i=0;i<n;i++)
                    nums1[i]=nums2[i];//不用push_back是因为这nums1后面有0
                    return;
            }
                
            for(int i=0;i<n;i++)//先把它复制过来
                nums1[m+i]=nums2[i];
            
            int j=0;
            for(int i=0;i<n;i++)
            {
                while(nums1[j]<=nums1[m+i] && j<m+i)//判断复制过来的数字(第m位开始)是不是符合排序的
                    j++;
                if(j==m+i)//符合,退出
                    break;
                int temp=nums1[m+i];//不符合,从那个大于它的数开始到它的位置,整体后移一位,并把它插入前面
                for(int k=m+i;k>j;k--)
                    nums1[k]=nums1[k-1];
                nums1[j]=temp;
            }
        }
    };

    分析:

    神仙题目啊,直接复制过来写个sort()就完了(我看那评论区很多人都这么做的),我一开始不知道后面是补零的,还想着用迭代器去做,然后就是一堆报错啥的,后来所幸直接当排序题做了,这里用的是插入排序,因为相对来说这个比较简单,前后是两个排序好的数组,最差的情况就是后面的那个最小值大于前面的最大值。

  • 相关阅读:
    qt 学习(三)消息基础
    qt学习(二)控件
    sqlserver学习_01
    java对文件操作--01
    js 将json字符串转换为json对象的方法解析
    实现动态代理(Java和spring)
    mysql_01_游标的使用
    java实现多文件上传01
    oracle-2_dblink的创建和使用
    sqlserver学习3---sql函数
  • 原文地址:https://www.cnblogs.com/CJT-blog/p/10601563.html
Copyright © 2011-2022 走看看