精華區beta Marginalman 關於我們 聯絡資訊
706. 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; } } } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.249.242 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1696436317.A.F0E.html