〔Leetcode〕 1146. Snapshot Array (Medium)
[Leetcode] 1146. Snapshot Array (Medium)
概述
題目
https://leetcode.com/problems/snapshot-array/
設計一個類似 NAS 的快照系統,init 功能為初始化,給予一 length 長度表需要的空間;set 為設定某空間的數值;snap 表於該時間點快照一張,注意:可都不改變空間資料但要求快照;get 表給予某一次快照時間,並回傳該快照時間之某空間資料為何
心得
題目有點難看懂,但理解後應可體會是道很經典、優秀的題目,實務上也有很高機率會需要建構此種系統,為加速快照搜詢,以 Binary Search 解之
Binary Search
思路
基本資料的建立都如題意所述,維 get 時加入 Binary Search 的操作以增加效率
程式
1 | class SnapshotArray(object): |
Complexity
Time Complexity: O(n log(n))
建構資料庫需 O(n) 的時間,搜詢只需 O(log n),有可能有 n 次 get 操作,故 O(n log(n))
Space Complexity: O(n)
n 次操作佔 n 個空間位置
PS.Solution 中有不少雙層 Hash 的解法,後經實測皆會有 MLE 的狀況,故基本上都無法 AC
此文章版權所有,如有轉載,請註明來自原作者,且未經同意,禁止截取