Leetcode 1146
支持快照版本的数组 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相关推荐
- LeetCode 1146. 快照数组(哈希map + 有序map)
文章目录 1. 题目 2. 解题 1. 题目 实现支持下列接口的「快照数组」- SnapshotArray: SnapshotArray(int length) - 初始化一个与指定长度相等的 类数组 ...
- taoqick 搜索自己CSDN博客
L1 L2正则化和优化器的weight_decay参数 kaiming初始化的推导 Pytorch动态计算图 Pytorch自动微分机制 PyTorch中在反向传播前为什么要手动将梯度清零? 通俗讲解 ...
- [LeetCode]135.Candy
[题目] There are N children standing in a line. Each child is assigned a rating value. You are giving ...
- 【LeetCode】(55)Jump Game(Medium)
题目 Jump Game Total Accepted: 52275 Total Submissions: 194395My Submissions Question Solution Given ...
- LeetCode.接雨水
题外话:LeetCode上一个测试用例总是通不过(我在文章末贴出通不过的测试用例),给的原因是超出运行时间,我拿那个测试用例试了下2.037ms运行完.我自己强行给加了这句: if(second == ...
- 数据结构算法与编程LeetCode题解
1-50 1. 两数之和 class Solution { public:vector<int> twoSum(vector<int> x, int y); };vector& ...
- LeetCode之Candy
[题目] There areNchildren standing in a line. Each child is assigned a rating value. You are giving ca ...
- leetcode 5. Longest Palindromic Substring 字符串中的最长回文数 逐步从O(n^2)优化至线性时间
题目 解析 思路一 暴力解法 思路二 指针+最大长度 思路3 由中间至两边找回数 思路4 Manacher's algorithm 线性时间 参考文档 题目 链接 给定一个字符串 s,找到 s 中最长 ...
- LeetCode 10. Regular Expression Matching python特性、动态规划、递归
前言 本文主要提供三种不同的解法,分别是利用python的特性.动态规划.递归方法解决这个问题 使用python正则属性 import reclass Solution2:# @return a bo ...
最新文章
- android 新分区 挂载,android 新增分区以及挂载方法-Go语言中文社区
- 计算机原理综合设计实验报告,计算机组成原理--课程设计实验报告.doc
- 《我在51CTO微职位学软考——奋发之路》
- iOS开发使用半透明模糊效果方法整理
- luogu P2791 幼儿园篮球题
- Miniprofiler在普通net项目中的使用
- 前端学习(3005):vue+element今日头条管理--处理布局完成
- java学习(109):StringBuilder,stringbuffer,string区别
- 机器学习入门系列(1)--机器学习概览(上)
- c#问题(按F1或F2键时触发事件)
- DWR自学笔记(1)HelloWorld
- python pandas写入_51-python3 pandas读写excel
- JavaScript中的面向对象--对象继承
- ubuntu搜狗拼音输入法选词框乱码
- 鲲鹏芯片的服务器,鲲鹏处理器及服务器介绍.pdf
- 20 个短小精悍的 pandas 骚操作
- python byte和str转换
- 屏幕刷新机制小结(九)
- 【R-FCN】《R-FCN: Object Detection via Region-based Fully Convolutional Networks》
- GameFrameWork学习笔记(一)
热门文章
- python3强智教务系统个人课表爬虫
- 一周信创舆情观察(2.14~2.20)
- google翻译出错什么原因?翻译英文页面时中文闪了下就显示“翻译出错请重试”
- 当前 .NET SDK 不支持将 .NET Core 2.2 设置为目标。请将 .NET Core 2.1 或更低版本设置
- python信用评分卡建模(附代码)
- 坚果云和亿方云该如何选?
- pngimg 可以商用吗_避免侵权!这10个免费可商用的图片网站,请一定收好
- Cocos2dx--使用Shader
- Appium基础 — uiautomatorviewer定位工具
- 2022.11.15 英语背诵