【秋招笔试】8.18大疆秋招(第二套)-开发岗-三语言题解
🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试
💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导
✨ 本系列打算持续跟新
春秋招笔试题
👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸
✨ 笔试合集传送们 -> 🧷春秋招笔试合集
🍒 本专栏已收集
70+
套笔试题,笔试真题
会在第一时间跟新🍄 题面描述等均已改编,如果和你笔试题看到的题面描述不一样请理解,做法和题目本质基本不变。
🧩 备战秋招还没订阅的朋友们可以冲一下啦,当试题收集至
100
套后,价格会进行一波调整~🍹 感谢各位朋友们的订阅,你们的支持是我们创作的最大动力 💞!
🪔 大疆的秋招第二场笔试,来啦!!!
🍥 大疆有很多套卷,每套卷子有
0/1/2
道编程题,题目内容不一定相同,这样选择题、填空、问答
的比重就占很大了。1️⃣ 题面比较绕,读懂之后其实发现是个非常简单的哈希表的运用(读不懂的建议看样例猜做法)
2️⃣ 思维题,打表之后发现题目可以进行转换,有难度
🍒 01.智能仓储管理系统
问题描述
LYA 公司开发了一套智能仓储管理系统。每个仓库最多可存放 种不同的商品,每个仓库都有唯一的编号。系统会记录每次商品入库和出库时对应的仓库编号。在某个特定时刻,所有仓库都是空的。从那个时刻开始,系统记录了一段时间内所有商品入库和出库的仓库编号。现在 LYA 想知道在这段时间后,每个仓库的商品种类分布情况,即存放 到 种商品的仓库各有多少个?仓库编号最大为 ,商品入库和出库操作次数最大为 。
输入格式
共 行,第 行为商品入库的操作次数,第 行为按顺序记录有商品入库的仓库编号,第 行为商品出库的操作次数,第 行为按顺序记录有商品出库的仓库编号。
输出格式
依次输出存放 到 种商品的仓库数量,中间以空格隔开。
样例输入
15
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
数据范围
- 仓库编号范围:
- 操作次数范围:
题解
可以用哈希表记录每个仓库的商品数量。
首先统计入库操作,然后减去出库操作,最后统计各种商品数量的仓库个数。
时间复杂度为 ,其中 是操作总次数。空间复杂度为 , 是不同仓库的数量。
参考代码
- Python
from collections import defaultdict
# 读取入库操作
n = int(input())
in_ops = list(map(int, input().split()))
# 读取出库操作
m = int(input())
out_ops = list(map(int, input().split()))
# 使用defaultdict统计每个仓库的商品数量
warehouse = defaultdict(int)
# 处理入库操作
for op in in_ops:
warehouse[op] += 1
# 处理出库操作
for op in out_ops:
warehouse[op] -= 1
# 统计不同商品数量的仓库个数
result = [0] * 16
# 遍历所有仓库,统计商品数量分布
for count in warehouse.values():
if 1 <= count <= 15:
result[count] += 1
# 输出结果
print(' '.join(map(str, result[1:])))
- Java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 读取入库操作
int n = scanner.nextInt();
int[] inOps = new int[n];
for (int i = 0; i < n; i++) {
inOps[i] = scanner.nextInt();
}
// 读取出库操作
int m = scanner.nextInt();
int[] outOps = new int[m];
for (int i = 0; i < m; i++) {
outOps[i] = scanner.nextInt();
}
// 使用HashMap统计每个仓库的商品数量
Map<Integer, Integer> warehouse = new HashMap<>();
// 处理入库操作
for (int op : inOps) {
warehouse.put(op, warehouse.getOrDefault(op, 0) + 1);
}
// 处理出库操作
for (int op : outOps) {
warehouse.put(op, warehouse.getOrDefault(op, 0) - 1);
}
// 统计不同商品数量的仓库个数
int[] result = new int[16];
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
这里收集了超全的刷题笔记,欢迎大家的订阅,会持续跟新的