2019-11-11 LeetCode in Rust LeetCode 1146. Snapshot Array Problem Statement use std::collections::{HashMap, BTreeMap};struct SnapshotArray { map : HashMap<i32, BTreeMap<i32, i32>>, version: i32}/** * `&self` means the method takes an immutable reference. * If you need a mutable reference, change it to `&mut self` instead. */impl SnapshotArray { fn new(length: i32) -> Self { SnapshotArray { map: HashMap::new(), version: 0 } } fn set(&mut self, index: i32, val: i32) { self.map.entry(index).or_insert(BTreeMap::new()); self.map.get_mut(&index).unwrap().insert(self.version, val); } fn snap(&mut self) -> i32 { let ret = self.version; self.version += 1; return ret; } fn get(&self, index: i32, snap_id: i32) -> i32 { if !self.map.contains_key(&index) { return 0; } let vals = self.map.get(&index).unwrap(); let mut ans = 0; for entry in vals { if snap_id >= *entry.0 { ans = *entry.1; } else { break; } } return ans; }} Newer LeetCode 1121. Divide Array Into Increasing Sequences Older LeetCode 1147. Longest Chunked Palindrome Decomposition