• 第2章 排序 || 第15节 有序数组合并练习题


    • 题目

    有两个从小到大排序以后的数组A和B,其中A的末端有足够的缓冲空容纳B。请编写一个方法,将B合并入A并排序。

    给定两个有序int数组AB,A中的缓冲空用0填充,同时给定A和B的真实大小int n和int m,请返回合并后的数组。

    • 解析

    class Merge {
    public:
        int* mergeAB(int* A, int* B, int n, int m) {
            // write code here
            while(n>0&&m>0)
            {
                if(A[n-1]>B[m-1])
                {
                    A[m+n-1]=A[n-1];
                    n--;
                }
                else
                {
                    A[m+n-1]=B[m-1];
                    m--;
                }            
            }
            while(m>0)
            {
                A[m-1]=B[m-1];
                m--;
            }
            return A;
        }
    };

     - python

    # -*- coding:utf-8 -*-
    class Merge:
        def mergeAB(self, A, B, n, m):
            # write code here
            i,j=n,m
            while i>0 and j>0:
                if A[i-1]>B[j-1]:
                    A[i+j-1]=A[i-1]
                    i=i-1
                else:
                    A[i+j-1]=B[j-1]
                    j=j-1
            if j>0:
                A[:j]=B[:j]
            return A
  • 相关阅读:
    Android常见问题——找不到HttpClient和okHttp的包
    linux大文件的日志查询
    ubuntu ssh连不上
    linux查询核数
    ubuntu系统安装手动分区
    计算服务器带宽
    linux命令
    打包jar 运行
    打印pdf
    运行 jar 包
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/9191762.html
Copyright © 2020-2023  润新知