[Swift]LeetCode1146. 快照數組 | Snapshot Array

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
?微信公眾號:山青詠芝(shanqingyongzhi)
?博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
?GitHub地址:https://github.com/strengthen/LeetCode
?原文地址:https://www.cnblogs.com/strengthen/p/11297779.html?
?如果鏈接不是山青詠芝的博客園地址,則可能是爬取作者的文章。
?原文已修改更新!強烈建議點擊原文地址閱讀!支持作者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

Implement a SnapshotArray that supports the following interface:

  • SnapshotArray(int length)?initializes an array-like data structure with the given length.??Initially, each element equals 0.
  • void set(index, val)?sets the element at the given?index?to be equal to?val.
  • int snap()?takes a snapshot of the array and returns the?snap_id: the total number of times we called?snap()?minus?1.
  • int get(index, snap_id)?returns the value at the given?index, at the time we took the snapshot with the given?snap_id

Example 1:

Input: ["SnapshotArray","set","snap","set","get"]
[[3],[0,5],[],[0,6],[0,0]]
Output: [null,null,0,null,5]
Explanation: 
SnapshotArray snapshotArr = new SnapshotArray(3); // set the length to be 3
snapshotArr.set(0,5);  // Set array[0] = 5
snapshotArr.snap();  // Take a snapshot, return snap_id = 0
snapshotArr.set(0,6);
snapshotArr.get(0,0);  // Get the value of array[0] with snap_id = 0, return 5

Constraints:

  • 1 <= length?<= 50000
  • At most?50000?calls will be made to?set,?snap, and?get.
  • 0 <= index?<?length
  • 0 <=?snap_id <?(the total number of times we call?snap())
  • 0 <=?val <= 10^9

實現支持下列接口的「快照數組」-?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]]
輸出:[null,null,0,null,5]
解釋:
SnapshotArray snapshotArr = new SnapshotArray(3); // 初始化一個長度為 3 的快照數組
snapshotArr.set(0,5);  // 令 array[0] = 5
snapshotArr.snap();  // 獲取快照,返回 snap_id = 0
snapshotArr.set(0,6);
snapshotArr.get(0,0);  // 獲取 snap_id = 0 的快照中 array[0] 的值,返回 5

提示:

  • 1 <= length?<= 50000
  • 題目最多進行50000?次setsnap,和?get的調用 。
  • 0 <= index?<?length
  • 0 <=?snap_id <?我們調用?snap()?的總次數
  • 0 <=?val <= 10^9

480ms
 1 class SnapshotArray {
 2 
 3     private var dict = [Int: Int]()
 4     private var snapshots = [[Int: Int]]()
 5     
 6     init(_ length: Int) {
 7         //array = Array(repeating: 0, count: length + 1)
 8     }
 9     
10     func set(_ index: Int, _ val: Int) {
11         dict[index] = val
12     }
13     
14     func snap() -> Int {
15         snapshots.append(dict)
16         return snapshots.count - 1
17     }
18     
19     func get(_ index: Int, _ snap_id: Int) -> Int {
20         return snapshots[snap_id][index] ?? 0
21     }
22 }
23 
24 /**
25  * Your SnapshotArray object will be instantiated and called as such:
26  * let obj = SnapshotArray(length)
27  * obj.set(index, val)
28  * let ret_2: Int = obj.snap()
29  * let ret_3: Int = obj.get(index, snap_id)
30  */

Runtime:?828 ms

Memory Usage:?27.8 MB
 1 class SnapshotArray {
 2     var vv:[[Int:Int]] = [[Int:Int]]()
 3 
 4     init(_ length: Int) {
 5         vv.append([Int:Int]())        
 6     }
 7     
 8     func set(_ index: Int, _ val: Int) {
 9         vv[vv.count - 1][index] = val
10     }
11     
12     func snap() -> Int {
13         vv.append([Int:Int]()) 
14         return vv.count - 2
15     }
16     
17     func get(_ index: Int, _ snap_id: Int) -> Int {
18         for i in stride(from:snap_id,through:0,by:-1)
19         {
20             if vv[i][index] != nil
21             {
22                 return vv[i][index]!
23             }
24         }
25         return 0
26     }
27 }
28 
29 /**
30  * Your SnapshotArray object will be instantiated and called as such:
31  * let obj = SnapshotArray(length)
32  * obj.set(index, val)
33  * let ret_2: Int = obj.snap()
34  * let ret_3: Int = obj.get(index, snap_id)
35  */

?

轉載于:https://www.cnblogs.com/strengthen/p/11297779.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276925.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276925.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276925.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

aspnet中gridview文本只顯示開始幾個文本_軟網推薦:三個小軟件 輕松解決文本操作難題...

TXT文本操作在Windows操作中算是比較容易的事了&#xff0c;但簡單的文本操作也會遇到難題。例如&#xff0c;對于我們反復需要使用的多個信息&#xff0c;如果僅靠CtrlC和CtrlV來回復制、粘貼&#xff0c;效率會極低&#xff1b;再如&#xff0c;對于一些軟件組件中顯示的文本…

剛被IBM收購的紅帽,它的下一站是中國

前不久IBM斥資340億美元收購紅帽的新聞震驚了所有人&#xff0c;這個金額是互聯網上第三大交易&#xff0c;也是開源史上最大交易。這個收購背后到底有哪些目的&#xff1f;紅帽接下來會做什么&#xff1f;11月6日紅帽在北京舉辦紅帽論壇&#xff0c;向外界介紹了紅帽的想法。 …

驗證DetailsView插入數據不為空

驗證DetailsView插入數據不為空,在對象數據源ObjectDataScource&#xff08;ChannelDS&#xff09;的Inserting事件中寫如下代碼&#xff1a;protected void ChannelDS_Inserting(object sender, ObjectDataSourceMethodEventArgs e) { string name "";…

為什么onenote一直在加載_OneNote:科研筆記獨一無二的無敵利器

每個人都夢想著自己有超乎常人的記憶力&#xff0c;擁有者過目不忘的技能&#xff0c;從此走向人生巔峰……然而我們都不是那樣的人&#xff0c;在這個高速發展的數字新信息時代&#xff0c;進行有效的記憶&#xff0c;保存我們隨時到來的靈感等&#xff0c;這就需要我們進行筆…

WPF 實現 DataGrid/ListView 分頁控件

原文:WPF 實現 DataGrid/ListView 分頁控件在WPF中&#xff0c;通常會選用DataGrid/ListView進行數據展示&#xff0c;如果數據量不多&#xff0c;可以直接一個頁面顯示出來。如果數據量很大&#xff0c;2000條數據&#xff0c;一次性顯示在一個頁面中&#xff0c;不僅消耗資源…

Sql Server 中漢字處理排序規則,全角半角

--1. 為數據庫指定排序規則CREATEDATABASEdb COLLATE Chinese_PRC_CI_ASGOALTERDATABASEdb COLLATE Chinese_PRC_BINGO/**//**/--2. 為表中的列指定排序規則CREATETABLEtb(col1 varchar(10),col2 varchar(10) COLLATE Chinese_PRC_CI_AS)GOALTERTABLEtb ADDcol3 varchar(10) CO…

解決局域網設置固定IP后無法上網?

1.cmd中輸入ipconfig /all查看ip和dns的狀態 2.查看自動獲取的dns是什么,然后手動設置ip和dns時,和自動獲取的保持一樣即可 注解&#xff1a;設置后還是無法上網后主要檢查ip與dns是否設置錯誤. 轉載于:https://www.cnblogs.com/yanans/p/11301061.html

鼠標輸入

一、隱藏并捕捉光標 偏航角和俯仰角是通過鼠標移動獲得的&#xff0c;水平的移動影響偏航角&#xff0c;豎直的移動影響俯仰角。 原理是&#xff0c;存儲上一幀鼠標的位置&#xff0c;在當前幀中計算鼠標位置與上一幀的位置相差多少。如果水平/豎直差別越大&#xff0c;那么俯仰…

c#用canny算子做邊緣提取_機器視覺學習(三)邊緣檢測

一、邊緣檢測二、邊緣檢測流程三、Canny邊緣檢測前言邊緣檢測是圖像處理和計算機視覺中&#xff0c;尤其是特征提取中的一個研究領域。有許多方法用于邊緣檢測&#xff0c;它們的絕大部分可以劃分為兩類&#xff1a;基于一階導數首先計算邊緣強度&#xff0c; 通常用一階導數表…

一個有關Update類型的存儲過程的問題

CREATE PROCEDURE testupdateproc AS declare id int declare trandate datetime declare tranlimit int update test set trandatetrandate, tranlimittranlimit where test.idid GO 存儲過程語句如上&#xff0c;檢查語法是沒有問題的&#xff0c;但是在程序中執行時卻不行…

[20190805]在小程序中使用npm包

小程序是可以使用npm包的 1. 初始化npm&#xff1b;&#xff08;在項目目錄下輸入&#xff09; npm init 此時項目文件夾會創建一個配置信息的package.json文件 2. 手動新建node_modules文件夾&#xff1b;&#xff08;在項目目錄下新建&#xff09; 3. 安裝npm包&#xff1b; …

bindresult必須在哪個位置_手機視頻剪輯工具哪個好?清爽視頻編輯APP有人推薦嗎?...

作為一個非常喜歡旅游的人&#xff0c;每次出門在外都喜歡發各種照片&#xff0c;以前發照片覺得就能夠表達自己的狀態和心情&#xff0c;但是隨著時間的變化發現&#xff0c;身邊的人都開始喜歡發視頻了。此前在飛機上拍攝了一段覺得不錯的天空視頻&#xff0c;想要制作成短片…

[轉] 能ping通,但不能上網.

一、感染了病毒所致這種情況往往表現在打開IE時&#xff0c;在IE界面的左下框里提示&#xff1a;正在打開網頁&#xff0c;但老半天沒響應。在任務管理器里查看進程&#xff0c;&#xff08;進入方法&#xff0c;把鼠標放在任務欄上&#xff0c;按右鍵—任務管理器—進程&#…

Gradle打包命令記錄

Gradle打包命令記錄第一種方式&#xff1a;gradle build執行后在在build/lib下生成war包第二種方式&#xff1a;gradle cleangradle --refresh-dependencies assemble

淺談ASP中Web頁面間的數據傳遞

【簡 介】  基于Web的動態網頁設計必會涉及到頁面間的數據傳遞&#xff0c;文章探討了ASP設計中常用的Web頁面間的數據傳遞方式&#xff0c;分析各種數據傳遞方式的使用方法、使用場合及優缺點&#xff0c;其都是設計階段選擇數據傳遞方式考慮的關鍵 往往使用動態網頁技術制作…

變頻電源出現故障了怎么辦,該如何去診斷呢

在變頻電源使用時間過長之后就會出現一些小故障&#xff0c;在出現這些小故障的時候很多人都不知道問題出在哪&#xff0c;今天中港揚盛的技術員教你如何的快速診斷變頻電源的故障方法。只有及時的發現&#xff0c;這樣就能夠有效地去解決變頻電源所出現的故障。下面就是變頻電…

無法訪問你試圖使用的功能所在的網絡位置_[steam實用工具]解決無法訪問商店/社區/好友列表的問題...

[steam實用工具]解決無法訪問商店/社區/好友列表的問題在我們使用steam的過程中&#xff0c;由于某些原因&#xff0c;在訪問商店/社區/好友列表時會被受到限制。針對這種情況&#xff0c;國內的大神些開發出了以下工具來解決我們訪問的難題。本文章中的軟件由“羽翼誠"大…

tomcat6.0+mysql5.0+jdk5.0+myeclipse6.0打造JSP開發平臺

1.下載tomcat6.0(http://tomcat.apache.org/download-60.cgi), mysql5.0(http://download.mysql.cn/src/2006/0710/5543.html), jdk5.0(http://download.mysql.cn/src/2006/0710/5543.html)以及myeclipse6.0(http://www.myeclipseide.com/module-htmlpages-display-pid-4.html)…

程序設計中的感悟

1. 學習應該從基礎打起&#xff0c;不要一開始就嘗試最高深的技術。 2. 每看一本書&#xff0c;不要說這章我以前學習過了&#xff0c;也掌握的很好&#xff0c;因此我可以跳過這一章看更重要的了。 3. 對于作業&#xff0c;遇到不會的盡量不要立刻向別人請教。如果實在解決…

(轉)用Java獲得當前性能信息

(轉&#xff09;用Java獲得當前性能信息 http://www.blogjava.net/amigoxie/archive/2008/04/30/197564.html在Java中&#xff0c;可以獲得總的物理內存、剩余的物理內存、已使用的物理內存等信息&#xff0c;本例講解如何取得這些信息&#xff0c;并且獲得在Windows下的內存使…