阿里开发4.2笔试

第一题:
十分钟ac
#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>


using namespace std;
int main() {
    int t;
    cin >> t;
    while (t-- > 0){
        int n;
        cin >> n;
        vector<int> data;
        unordered_map<int, bool> find;
        while (n-- > 0){
            int tmp;
            cin >> tmp;
            data.push_back(tmp);
            //find[tmp] = true;
        }

        int ans = 0;
        sort(data.begin(), data.end());
        for (int i = data.size() - 1; i >= 0; --i) {
            int tmp = data[i];
            if (find.count(tmp + 1) != 1){
                find[tmp + 1] = true;
                find.erase(tmp);
            }else{
                find[tmp] = true;
            }
        }
        cout << find.size() << endl;
    }
}

第二题:
十分钟用递归写完,结果递归层数超出,又改成栈去做,又超出内存限制,怼了50分钟没怼过去,考完把舍友当小黄鸭讲题目发现一个判断条件粗心写错了,心态炸裂,这里放出正确的:
#include <iostream>

using namespace std;

double cal(int a, int b);

int main() {
    int t;
    cin >> t;
    while (t-- > 0){
        int origin;
        cin >> origin;
        cout << cal(origin, origin) << endl;
    }
}

double cal(int a, int b){
    if (a > 0 && b <= 0){
        return 0;
    }else if (a <= 0 && b <= 0){
        return 0.5;
    }else if (a <= 0 && b > 0){
        return 1;
    }else{
        return 0.25 * cal(a - 100, b) + 0.25 * cal(a - 75, b - 25) + 0.25 * cal(a - 50, b - 50) + 0.25 * cal(a - 25, b - 75);
    }
}


#阿里巴巴##笔经#
全部评论
不想啊 递归就超时
点赞
送花
回复 分享
发布于 2021-04-02 21:10
第一题不是本来就是有序列表吗
点赞
送花
回复 分享
发布于 2021-04-02 21:17
秋招专场
校招火热招聘中
官网直投
楼主你好,请问你是什么岗位?开发的话,是Java方向还是C++方向?或者其他语言方向~
点赞
送花
回复 分享
发布于 2021-04-03 19:38

相关推荐

投递华为等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务