Re: [闲聊] 每日LeetCode

楼主: yam276 ('_')   2023-10-05 00:18:35
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;
}
}
}
}

Links booklink

Contact Us: admin [ a t ] ucptt.com