日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(七)数据结构之“字典”

發布時間:2023/12/31 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (七)数据结构之“字典” 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據結構之“字典”

  • 字典是什么?
  • LeetCode:349.兩個數組的交集
  • LeetCode:20.有效的括號
  • LeetCode:1.兩數之和
  • LeetCode:3.無重復字符的最長子串
  • LeetCode:76.最小覆蓋子串
  • 思考題

字典是什么?

與集合類似,字典也是一種存儲唯一值的數據結構,但它是以鍵值對的形式來存儲
ES6中有字典,名為Map
字典的常用操作:鍵值對的增刪改查

const m = new Map();// 增 m.set('a', 'aa'); m.set('b', 'bb');// 刪 m.delete('b'); // m.clear();// 改 m.set('a', 'aaa');//查 m.set('a');

LeetCode:349.兩個數組的交集

輸入:nums1 = [1,2,2,1],nums = [2,2]
輸出:[2]

解題思路
求nums1和nums2都有的值
用字典建立一個映射關系,記錄nums1里有的值
遍歷nums2,找出nums1里也有的值
解題步驟
新建一個字典,遍歷nums1,填充字典
遍歷nums2,遇到字典里的值就選出,并從字典中刪除

時間復雜度O(m+n),空間復雜度O(m)

LeetCode:20.有效的括號


時間復雜度O(n),空間復雜度O(n)

LeetCode:1.兩數之和

給定nums = [2,7,11,15],target = 9
因為nums[0] + nums[1] = 2 + 7 = 9
所以返回[0,1]

解題思路
把nums想象成相親者
把target想象成匹配條件
用字典建立一個婚姻介紹所,存儲相親者的數字和下標
解題步驟
新建一個字典作為婚姻介紹所
nums里的值,逐個來介紹所找對象,沒有合適的就先登記著,有合適的就牽手成功


時間復雜度O(n),空間復雜度O(n),空間復雜度可以做得更好,可以時間換空間

LeetCode:3.無重復字符的最長子串


解題思路
先找出所有的不包含重復字符的子串
找出長度最大那個子串,返回其長度即可
解題步驟
用雙指針維護一個滑動窗口,用來剪切子串
不斷移動右指針,遇到重復字符,就把左指針移動到重復字符的下一位
過程中,記錄所有窗口的長度,并返回最大值

時間復雜度O(n),空間復雜度:O(m),m是字符串中不重復字符的個數

LeetCode:76.最小覆蓋子串


解題思路
先找出所有包含T的子串
找出長度最小那個子串,返回即可
解題步驟
用雙指針維護一個滑動窗口
移動右指針,找到包含T的子串,移動左指針,盡量減少包含T的子串的長度
循環上述過程,找出包含T的最小子串

時間復雜度:O(m+n),m是t的長度,n是s的長度
空間復雜度:O(m),m是t里不同字符的個數

思考題

1、在你的實際工作中使用字典完成一次映射操作
2、請用 Chrome 的 Profile 工具或其他任意前端性能測試工具,測試 Map 和 Object 頻繁增刪操作的性能,誰高誰低?

總結

以上是生活随笔為你收集整理的(七)数据结构之“字典”的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。