2020秋招拼多多客户端开发笔试题目

本文分享了2020年拼多多客户端开发笔试题目,包括数组升序问题、字符串成环判断、任务依赖优化和最高金字塔搭建等。题目涉及数组操作、字符串处理、任务调度和重量平衡计算,对算法和逻辑思维能力有一定要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 数组升序

    题目描述:

    给定两个数组A和B。其中数组A是几乎严格升序排列的,几乎的定义是只需改变其中一个数,即可满足完全升序排列。这里严格升序排列指的是不允许相邻两个为相同的数。请找出数组B中满足要求的最大数,并输出最终的有序数组,如果找不到,输出”NO”。

    输入描述:

    共两行,第一行是数组A,第二行为数组B,输入之间用空格分割,且len(A),len(B)<100。

    输出描述:

    最终有序数组,不存在则输出NO

    示例:

    输入:

    1 3 5 7 4 10

    2 1 5 8 9

    输出:

    1 3 7 9 10
     

    #include <vector>
    #include <iostream>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    int main(){
        vector<int> A;
        vector<int> B;
        int tmp;
        int idx=-1,i=-1;
        while(scanf("%d",&tmp)!=EOF){
            if(tmp!=' ') {
                A.push_back(tmp);
                ++i;
            }
            if(i>0 && A[i]<=A[i-1]){
                idx=i;
            }
            if(tmp=='\n')
                break;
        }
        while(scanf("%d",&tmp)!=EOF){
            if(tmp!=' ')
                B.push_back(tmp);
        }
        if(idx==-1) {
            for (int k = 0; k < A.size(); ++k) {
                if (k > 0)
                    cout << " ";
                cout << A[k];
            }
            cout << endl;
        }else{
            sort(B.begin(),B.end());
            int pos=-1;
            vector<int>::iterator it;
            if(idx<A.size()-1){//有左右,更换A[idx]
                it=upper_bound(B.begin(),B.end(),A[idx-1]);//找到大于左边数A[idx-1]的下标
                if(it!=B.end() && *it<A[idx+1]){//找到该数,且这个数在(A[idx-1],A[idx+1])之间
                    pos=it-B.begin();
                }//否则就是没有
            }else{
                if(idx>1){//不是在前两个数里面
                    if(A[idx]<=A[idx-2]){//如果这个数小于等于前面第二个数,则只能更换A[idx]
                        it=upper_bound(B.begin(),B.end(),A[idx-1]);//找到大于左边数A[idx-1]的下标
                  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值