面试题答案
一键面试设计思路
Item
结构体:定义包含权重、稀有度等复杂属性的Item
结构体。Room
结构体:使用HashMap
存储房间内的物品,以便根据物品ID高效查找物品。同时,添加房间ID字段,方便外部查找。Region
结构体:同样使用HashMap
存储区域内的房间,便于根据房间ID快速定位房间。- 游戏地图结构体:使用
HashMap
存储所有区域,这样可以根据区域ID高效查找区域。
关键部分代码示例
use std::collections::HashMap;
// 定义Item结构体
struct Item {
weight: f32,
rarity: u8,
// 其他复杂属性
}
// 定义Room结构体
struct Room {
room_id: u32,
items: HashMap<u32, Item>,
}
// 定义Region结构体
struct Region {
region_id: u32,
rooms: HashMap<u32, Room>,
}
// 定义游戏地图结构体
struct GameMap {
regions: HashMap<u32, Region>,
}
// 示例:向地图中添加区域、房间和物品
impl GameMap {
fn add_region(&mut self, region_id: u32) {
self.regions.insert(region_id, Region {
region_id,
rooms: HashMap::new(),
});
}
fn add_room(&mut self, region_id: u32, room_id: u32) {
if let Some(region) = self.regions.get_mut(®ion_id) {
region.rooms.insert(room_id, Room {
room_id,
items: HashMap::new(),
});
}
}
fn add_item(&mut self, region_id: u32, room_id: u32, item_id: u32, item: Item) {
if let Some(region) = self.regions.get_mut(®ion_id) {
if let Some(room) = region.rooms.get_mut(&room_id) {
room.items.insert(item_id, item);
}
}
}
}
通过上述设计,在查找房间或物品时,可以通过HashMap
提供的O(1)
平均时间复杂度的查找操作来高效获取数据。同时,HashMap
在内存布局上相对紧凑,有助于提升性能。