支持快照版本的数组 snapshot Array

存储每个时间点值,然后二分查找,难点在于二分查到,这个二分不变式条件的把握

his[index].get(r)[l] < snap_id < his[index].get(r)[0]
public class SnapshotArray {List<int[]>[] his;int time;public SnapshotArray(int length) {his = new ArrayList[length];for (int i = 0; i < length; i++) {his[i] = new ArrayList<>();//预处理his[i].add(new int[]{0, 0});}time = 0;}public void set(int index, int val) {if (his[index].get(his[index].size() - 1)[0] == time) {//覆盖his[index].get(his[index].size() - 1)[1] = val;} else {//新增his[index].add(new int[]{time, val});}}public int snap() {return time++;}public int get(int index, int snap_id) {int l = 0;int r = his[index].size() - 1;if (snap_id >= his[index].get(r)[0]) {return his[index].get(r)[1];}//不变式是 snap_id 满足 his[index].get(r)[l] < snap_id < his[index].get(r)[0]while (l + 1 < r) {int mid = (l + r) / 2;int x = his[index].get(mid)[0];if (x == snap_id) return his[index].get(mid)[1];else if (x < snap_id) {l = mid;} else {r = mid;}}return his[index].get(l)[1];}
}

更多优秀的代码:

https://leetcode.com/problems/snapshot-array/discuss/?currentPage=1&orderBy=most_votes&query=

抽空学习下java内置的一些常用的算法,比如数组 集合的二分,treemap的一些内置功能

Leetcode 1146相关推荐

  1. LeetCode 1146. 快照数组(哈希map + 有序map)

    文章目录 1. 题目 2. 解题 1. 题目 实现支持下列接口的「快照数组」- SnapshotArray: SnapshotArray(int length) - 初始化一个与指定长度相等的 类数组 ...

  2. taoqick 搜索自己CSDN博客

    L1 L2正则化和优化器的weight_decay参数 kaiming初始化的推导 Pytorch动态计算图 Pytorch自动微分机制 PyTorch中在反向传播前为什么要手动将梯度清零? 通俗讲解 ...

  3. [LeetCode]135.Candy

    [题目] There are N children standing in a line. Each child is assigned a rating value. You are giving ...

  4. 【LeetCode】(55)Jump Game(Medium)

    题目 Jump Game Total Accepted: 52275 Total Submissions: 194395My Submissions Question  Solution  Given ...

  5. LeetCode.接雨水

    题外话:LeetCode上一个测试用例总是通不过(我在文章末贴出通不过的测试用例),给的原因是超出运行时间,我拿那个测试用例试了下2.037ms运行完.我自己强行给加了这句: if(second == ...

  6. 数据结构算法与编程LeetCode题解

    1-50 1. 两数之和 class Solution { public:vector<int> twoSum(vector<int> x, int y); };vector& ...

  7. LeetCode之Candy

    [题目] There areNchildren standing in a line. Each child is assigned a rating value. You are giving ca ...

  8. leetcode 5. Longest Palindromic Substring 字符串中的最长回文数 逐步从O(n^2)优化至线性时间

    题目 解析 思路一 暴力解法 思路二 指针+最大长度 思路3 由中间至两边找回数 思路4 Manacher's algorithm 线性时间 参考文档 题目 链接 给定一个字符串 s,找到 s 中最长 ...

  9. LeetCode 10. Regular Expression Matching python特性、动态规划、递归

    前言 本文主要提供三种不同的解法,分别是利用python的特性.动态规划.递归方法解决这个问题 使用python正则属性 import reclass Solution2:# @return a bo ...

最新文章

  1. android 新分区 挂载,android 新增分区以及挂载方法-Go语言中文社区
  2. 计算机原理综合设计实验报告,计算机组成原理--课程设计实验报告.doc
  3. 《我在51CTO微职位学软考——奋发之路》
  4. iOS开发使用半透明模糊效果方法整理
  5. luogu P2791 幼儿园篮球题
  6. Miniprofiler在普通net项目中的使用
  7. 前端学习(3005):vue+element今日头条管理--处理布局完成
  8. java学习(109):StringBuilder,stringbuffer,string区别
  9. 机器学习入门系列(1)--机器学习概览(上)
  10. c#问题(按F1或F2键时触发事件)
  11. DWR自学笔记(1)HelloWorld
  12. python pandas写入_51-python3 pandas读写excel
  13. JavaScript中的面向对象--对象继承
  14. ubuntu搜狗拼音输入法选词框乱码
  15. 鲲鹏芯片的服务器,鲲鹏处理器及服务器介绍.pdf
  16. 20 个短小精悍的 pandas 骚操作
  17. python byte和str转换
  18. 屏幕刷新机制小结(九)
  19. 【R-FCN】《R-FCN: Object Detection via Region-based Fully Convolutional Networks》
  20. GameFrameWork学习笔记(一)

热门文章

  1. python3强智教务系统个人课表爬虫
  2. 一周信创舆情观察(2.14~2.20)
  3. google翻译出错什么原因?翻译英文页面时中文闪了下就显示“翻译出错请重试”
  4. 当前 .NET SDK 不支持将 .NET Core 2.2 设置为目标。请将 .NET Core 2.1 或更低版本设置
  5. python信用评分卡建模(附代码)
  6. 坚果云和亿方云该如何选?
  7. pngimg 可以商用吗_避免侵权!这10个免费可商用的图片网站,请一定收好
  8. Cocos2dx--使用Shader
  9. Appium基础 — uiautomatorviewer定位工具
  10. 2022.11.15 英语背诵