用 Python 高效实现 SnapshotArray:支持快照的动态数组设计与分析
在大型系统中,保留数据的某个历史状态是一种常见的需求。本文将带你逐步理解并实现一个支持快照机制的「类数组结构」,可以在任何时间点保存当前状态,并在之后按需回溯查看。这个问题在 LeetCode 上以题目 “Snapshot Array” 出现(题号 1146),是一个设计类题目,具有较高的实用价值和算法挑战性。
📌 题目描述
请实现一个支持以下接口的类 SnapshotArray
:
SnapshotArray(int length)
:初始化一个与指定长度相等的类数组,所有元素初始为0
。void set(index, val)
:设置数组中指定索引index
的元素为val
。int snap()
:拍摄快照,返回当前快照的snap_id
,编号为调用snap()
的次数减去 1。int get(index, snap_id)
:返回在指定快照snap_id
中索引为index
的元素值。
示例输入:
["SnapshotArray","set","snap","set","get"]
[[3],[0,5],[],[0,6],[0,0]]