楼主: 
yam276 ('_')   
2023-10-05 00:18:35706. Design HashMap
设计一个HashMap
思路:
用最简单的取余数来当Hash
Code:
pub struct MyHashMap {
    buckets: Vec<Option<(i32,i32)>>,
    size:usize,
}
impl MyHashMap {
    fn new() -> Self {
        MyHashMap {
            buckets: vec![None; 100000],
            size: 100000,
        }
    }
    fn hash(&self, key: i32) -> usize{
        key as usize % self.size
    }
    fn put(&mut self, key: i32, value: i32) {
        let hash_id = self.hash(key);
        self.buckets[hash_id] = Some((key,value));
    }
    fn get(&self, key: i32) -> i32 {
        let hash_id = self.hash(key);
        match &self.buckets[hash_id] {
            Some((k, v)) if *k == key => *v,
            _ => -1,
        }
    }
    fn remove(&mut self, key: i32) {
        let hash_id = self.hash(key);
        if let Some((k, _)) = &self.buckets[hash_id] {
            if *k == key {
                self.buckets[hash_id] = None;
            }
        }
    }
}