leetcode演算法總結 map儲存資料

2021-10-14 09:27:06 字數 480 閱讀 4741

我們之所以使用map進行資料的儲存,主要是因為:map的查詢時間複雜度為o(1),而陣列遍歷的查詢時間複雜度為o(n),所以我們可以使用空間換時間,在一些情況中使用map來代替陣列遍歷進行查詢。

map是基於紅黑樹實現。紅黑樹作為一種自平衡二叉樹,保障了良好的最壞情況執行時間,即它可以做到在o(log n)時間內完成查詢,插入和刪除,在對單次時間敏感的場景下比較建議使用map做為容器。比如實時應用,可以保證最壞情況的執行時間也在預期之內。

另紅黑樹是一種二叉查詢樹,二叉查詢樹乙個重要的性質是有序,且中序遍歷時取出的元素是有序的。對於一些需要用到有序性的應用場景,應使用map。

unordered_map是基於hash_table實現,hash_table最大的優點,就是把資料的儲存和查詢消耗的時間大大降低,幾乎可以看成是常數時間o(1);而代價僅僅是消耗比較多的記憶體。然而在當前可利用記憶體越來越多的情況下,用空間換時間的做法是值得的。

使用陣列代替map主要是為了降低空間利用率。

LeetCode 演算法總結

array 矩陣 hash table 雜湊 linked list 鍊錶 math 數學 two pointers 雙指標 sting 字串 divide and conquer 分治 binary search 二分 dynamic programming 動態規劃 backtracking 回...

Leetcode演算法總結

應用 1.給定乙個有序遞增陣列,在陣列中找到滿足條件的兩個數,使得這兩個數的和為某一給定的值。如果有多對數,只輸出一對即可。2.hoare的雙向掃瞄快速劃分法。3.奇偶排序 4.求單鏈表的中間元素。異構指標 一般是針對 array 型別的題目。array 當中有兩類元素,他們 之間 或者 各自 有某...

LeetCode 回溯演算法總結

全排列 class solution void f vectorint res,vector int nums,vector int s,vector int visited for int i 0 isize i 子集 class solution void f vectorint result,...