力扣1146.快照数组

力扣1146.快照数组

  • 如果每一次快照都开一个新数组 会爆内存

  • 因为每次只会修改几个数 所以用哈希表 把每个数修改的信息存储下来

    • 搜的时候根据快照编号二分
cpp 复制代码
  class SnapshotArray {
      int cur_snap_id = 0;
       unordered_map<int,vector<pair<int,int>>> history;
  public:
      SnapshotArray(int length){}
      
      void set(int index, int val) {
          history[index].emplace_back(cur_snap_id,val);
      }
      
      int snap() {
          return cur_snap_id++;
      }
      
      int get(int index, int snap_id) {
          auto &p = history[index];
          //找>=snap_id+1的那组修改信息
          //如果不+1 当前snap_id存在 那么会找到snap_id
          //当前snap_id不存在 那么会找到>snap_id的那组
          //不统一了
          int j = ranges::lower_bound(p,make_pair(snap_id+1,0)) - p.begin() - 1;
          return j >= 0 ? p[j].second:0;
      }
  };
相关推荐
水母量化3 分钟前
量化收益率计算别混用:算术均值、几何均值与对数收益
算法·均值算法·量化交易
yuanxi20019 分钟前
华宝股份山东嘉萃投产,销售如何接住产能节奏
职场和发展·创业创新·学习方法
Xin77031 分钟前
LeetCode 78. 子集(回溯法)
leetcode
xunberg35 分钟前
【生命科学 Agent】推理平台(三)
算法·程序员·架构
INGNIGHT35 分钟前
151 · 买卖股票的最佳时机 III(序列dp)
数据结构·算法·leetcode
庖丁解牛39 分钟前
十进制转二进制:凑数法(填1法)
算法
行者全栈架构师1 小时前
【共创稿事节】双引擎智能相册:HarmonyOS 7(API 26)文搜图 × 图像超分端侧 AI 联动实战
前端·算法·架构
圣保罗的大教堂1 小时前
leetcode 3644. 排序排列 中等
leetcode
背景调查知识库1 小时前
第三方背景调查中的企业委托方与受托方角色核验什么?
职场和发展
小蒋观天下1 小时前
【无标题】红外补光近距过曝、远距欠曝:导致车牌AI识别失效调试
人工智能·深度学习·数码相机·算法·机器学习·ai大模型