大疆笔试 大疆笔试题 0818

笔试时间:2024年08月18日

历史笔试传送门:2023秋招笔试合集

第一题

题目

小C开发了一种新型的无人机机场系统。每个机场能够容纳最多15架无人机,并且每个机场都有唯一的编号。无人机每次起飞或降落,调度中心都会记录对应的机场编号。在某个特定时刻,所有的机场都是空的。从那个时刻开始,调度中心记录了一段时间内所有起飞和降落无人机的机场编号。现在小C想知道在这段时间后,每个机场的无人机数量分布情况,即存放飞机数量为1到15的机场各有多少台?机场编号最大为2^20,飞机起飞降落架次最大为1.8*10^6。

输入描述

共4行。

第1行为降落至机场的飞机架次

第2行为按顺序记景有飞机降落的机场编号

第3行为从机场起飞的飞机架次

第4行为按顶序记录有飞机起飞的机场编号

输出描述

依次输出存放飞机数量为1到15的机场各有多少台,中间以空格隔开。

样例输入

15

6 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5

5

1 2 3 4 5

样例输出

0 5 0 0 0 0 0 0 0 0 0 0 0 0 0

参考题解

哈希。

C++:[此代码未进行大量数据的测试,仅供参考]

#include <iostream>
#include <unordered_map>
#include <vector>

int main() {
    int landCnt;
    std::cin >> landCnt;

    std::unordered_map<int, int> apMap;

    for (int i = 0; i < landCnt; ++i) {
        int apId;
        std::cin >> apId;
        apMap[apId]++;
    }

    int takeoff_count;
    std::cin >> takeoff_count;

    for (int i = 0; i < takeoff_count; ++i) {
        int apId;
        std::cin >> apId;
        apMap[apId]--;
    }

    std::vector<int> count(16, 0); 

    for (const auto& entry : apMap) {
        int drones = entry.second;
        if (drones > 0 && drones <= 15) {
            count[drones]++;
        }
    }

    for (int i = 1; i <= 15; ++i) {
        if (i > 1) std::cout << " ";
        std::cout << count[i];
    }
    std::cout << std::endl;

    return 0;
}

Java:[此代码未进行大量数据的测试,仅供参考]

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class DroneCounter {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int landCnt = scanner.nextInt();
        Map<Integer, Integer> apMap = new HashMap<>();

        for (int i = 0; i < landCnt; i++) {
            int apId = scanner.nextInt();
            apMap.put(apId, apMap.getOrDefault(apId, 0) + 1);
        }

        int takeoff_count = scanner.nextInt();
        for (int i = 0; i < takeoff_count; i++) {
            int apId = scanner.nextInt();
            apMap.put(apId, apMap.getOrDefault(apId, 0) - 1);
        }

        int[] count = new int[16];
        for (Map.Entry<Integer, Integer> entry : apMap.entrySet()) {
            int drones = entry.getValue();
            if (drones > 

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024 BAT笔试合集 文章被收录于专栏

持续收录字节、腾讯、阿里、美团、美团、拼多多、华为等笔试题解,包含python、C++、Java多种语言版本,持续更新中。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务