面试题 10.01.合并排序的数组

2021-04-13 21:28

阅读:343

标签:ble   面试   数组   void   sort   class   https   tor   一个   

原题链接

题解

方式一:利用额外的空间

开一个额外的空间存放数据,最后再放回去

代码如下
class Solution {
public:
    void merge(vector& A, int m, vector& B, int n) {
        int i = 0, j = 0; int t[1010]; int k = 0;
        while(i 

方式二:原地逆序归并

因为题目中在A中已经开了足够的空间放在后面,可以逆序的来归并,就不需要移动了,直接在原地进行操作

代码如下
class Solution {
public:
    void merge(vector& A, int m, vector& B, int n) {
       //使用原地逆序归并,就不需要额外的空间了
       int i = m - 1, j = n - 1, k = m + n - 1;
       while(i >= 0 && j >= 0){
           if(A[i] = 0) A[k --] = B[j --];//因为如果是A中的数据多了,那么他的顺序就直接是好的
    }
};

面试题 10.01.合并排序的数组

标签:ble   面试   数组   void   sort   class   https   tor   一个   

原文地址:https://www.cnblogs.com/Lngstart/p/13339602.html


评论


亲,登录后才可以留言!