【程序员面试金典】面试题 10.01. 合并排序的数组

题目

https://leetcode-cn.com/problems/sorted-merge-lcci/

解题思路

合并排序没什么好说的。。。

代码

class Solution {
    
    
public:
    void merge(vector<int>& A, int m, vector<int>& B, int n) {
    
    
        int i = 0; // A位置游标
        int j = 0; // B位置游标
        int k = 0; // 临时位置游标
        vector<int> t(m + n); // 临时数组

        // 合并
        while(i < m && j < n){
    
    
            if(A[i] > B[j]){
    
    
                t[k] = B[j++];
            }else{
    
    
                t[k] = A[i++];
            }
            k++;
        }

        // 处理A中剩余元素
        while(i < m){
    
    
            t[k++] = A[i++];
        }

        // 处理B中剩余元素
        while(j < n){
    
    
            t[k++] = B[j++];
        }

        // 放回到A中
        for(k = 0; k < m + n; k++){
    
    
            A[k] = t[k];
        }
    }
};

猜你喜欢

转载自blog.csdn.net/Activity_Time/article/details/104644831