Hello 算法 1.2.0 繁体中文 C# 版
4.1.3 陣列典型應用 陣列是一種基礎且常見的資料結構,既頻繁應用在各類演算法之中,也可用於實現各種複雜資料結構。 ‧ 隨機訪問:如果我們想隨機抽取一些樣本,那麼可以用陣列儲存,並生成一個隨機序列,根據索引實現 隨機抽樣。 ‧ 排序和搜尋:陣列是排序和搜尋演算法最常用的資料結構。快速排序、合併排序、二分搜尋等都主要在 陣列上進行。 ‧ 查詢表:當需要快速查詢一個元素或其對應關係時,可 多次雜湊是開放定址的一種,開放定址法都有不能直接刪除元素的缺陷,需要透過標記刪除。標記為已刪除 的空間可以再次使用。當將新元素插入雜湊表,並且透過雜湊函式找到標記為已刪除的位置時,該位置可以 被新元素使用。這樣做既能保持雜湊表的探測序列不變,又能保證雜湊表的空間使用率。 Q:為什麼線上性探查中,查詢元素的時候會出現雜湊衝突呢? 查詢的時候透過雜湊函式找到對應的桶和鍵值對,發現 key 不匹配,這就代表有雜湊衝突。因此,線性探查 LevelOrder(TreeNode root) { // 初始化佇列,加入根節點 Queuequeue = new(); queue.Enqueue(root); // 初始化一個串列,用於儲存走訪序列 List list = []; while (queue.Count != 0) { TreeNode node = queue.Dequeue(); // 隊列出隊 list.Add(node 0 码力 | 379 页 | 18.79 MB | 10 月前3Hello 算法 1.2.0 繁体中文 Go 版
4.1.3 陣列典型應用 陣列是一種基礎且常見的資料結構,既頻繁應用在各類演算法之中,也可用於實現各種複雜資料結構。 ‧ 隨機訪問:如果我們想隨機抽取一些樣本,那麼可以用陣列儲存,並生成一個隨機序列,根據索引實現 隨機抽樣。 ‧ 排序和搜尋:陣列是排序和搜尋演算法最常用的資料結構。快速排序、合併排序、二分搜尋等都主要在 陣列上進行。 ‧ 查詢表:當需要快速查詢一個元素或其對應關係時,可 多次雜湊是開放定址的一種,開放定址法都有不能直接刪除元素的缺陷,需要透過標記刪除。標記為已刪除 的空間可以再次使用。當將新元素插入雜湊表,並且透過雜湊函式找到標記為已刪除的位置時,該位置可以 被新元素使用。這樣做既能保持雜湊表的探測序列不變,又能保證雜湊表的空間使用率。 Q:為什麼線上性探查中,查詢元素的時候會出現雜湊衝突呢? 第 6 章 雜湊表 www.hello‑algo.com 134 查詢的時候透過雜湊函式找到對應的桶和鍵值對,發現 levelOrder(root *TreeNode) []any { // 初始化佇列,加入根節點 queue := list.New() queue.PushBack(root) // 初始化一個切片,用於儲存走訪序列 nums := make([]any, 0) for queue.Len() > 0 { // 隊列出隊 node := queue.Remove(queue.Front()).(*TreeNode)0 码力 | 385 页 | 18.80 MB | 10 月前3Hello 算法 1.2.0 繁体中文 Kotlin 版
4.1.3 陣列典型應用 陣列是一種基礎且常見的資料結構,既頻繁應用在各類演算法之中,也可用於實現各種複雜資料結構。 ‧ 隨機訪問:如果我們想隨機抽取一些樣本,那麼可以用陣列儲存,並生成一個隨機序列,根據索引實現 隨機抽樣。 ‧ 排序和搜尋:陣列是排序和搜尋演算法最常用的資料結構。快速排序、合併排序、二分搜尋等都主要在 陣列上進行。 ‧ 查詢表:當需要快速查詢一個元素或其對應關係時,可 多次雜湊是開放定址的一種,開放定址法都有不能直接刪除元素的缺陷,需要透過標記刪除。標記為已刪除 的空間可以再次使用。當將新元素插入雜湊表,並且透過雜湊函式找到標記為已刪除的位置時,該位置可以 被新元素使用。這樣做既能保持雜湊表的探測序列不變,又能保證雜湊表的空間使用率。 Q:為什麼線上性探查中,查詢元素的時候會出現雜湊衝突呢? 查詢的時候透過雜湊函式找到對應的桶和鍵值對,發現 key 不匹配,這就代表有雜湊衝突。因此,線性探查 MutableList{ // 初始化佇列,加入根節點 val queue = LinkedList () queue.add(root) // 初始化一個串列,用於儲存走訪序列 val list = mutableListOf () while (queue.isNotEmpty()) { val node = queue.poll() // 隊列出隊 list 0 码力 | 382 页 | 18.79 MB | 10 月前3Hello 算法 1.2.0 繁体中文 Java 版
4.1.3 陣列典型應用 陣列是一種基礎且常見的資料結構,既頻繁應用在各類演算法之中,也可用於實現各種複雜資料結構。 ‧ 隨機訪問:如果我們想隨機抽取一些樣本,那麼可以用陣列儲存,並生成一個隨機序列,根據索引實現 隨機抽樣。 ‧ 排序和搜尋:陣列是排序和搜尋演算法最常用的資料結構。快速排序、合併排序、二分搜尋等都主要在 陣列上進行。 ‧ 查詢表:當需要快速查詢一個元素或其對應關係時,可 多次雜湊是開放定址的一種,開放定址法都有不能直接刪除元素的缺陷,需要透過標記刪除。標記為已刪除 的空間可以再次使用。當將新元素插入雜湊表,並且透過雜湊函式找到標記為已刪除的位置時,該位置可以 被新元素使用。這樣做既能保持雜湊表的探測序列不變,又能保證雜湊表的空間使用率。 Q:為什麼線上性探查中,查詢元素的時候會出現雜湊衝突呢? 查詢的時候透過雜湊函式找到對應的桶和鍵值對,發現 key 不匹配,這就代表有雜湊衝突。因此,線性探查 { // 初始化佇列,加入根節點 Queuequeue = new LinkedList<>(); queue.add(root); // 初始化一個串列,用於儲存走訪序列 List list = new ArrayList<>(); while (!queue.isEmpty()) { TreeNode node = queue.poll(); 0 码力 | 379 页 | 18.79 MB | 10 月前3Hello 算法 1.2.0 繁体中文 Python 版
4.1.3 陣列典型應用 陣列是一種基礎且常見的資料結構,既頻繁應用在各類演算法之中,也可用於實現各種複雜資料結構。 ‧ 隨機訪問:如果我們想隨機抽取一些樣本,那麼可以用陣列儲存,並生成一個隨機序列,根據索引實現 隨機抽樣。 ‧ 排序和搜尋:陣列是排序和搜尋演算法最常用的資料結構。快速排序、合併排序、二分搜尋等都主要在 陣列上進行。 ‧ 查詢表:當需要快速查詢一個元素或其對應關係時,可 多次雜湊是開放定址的一種,開放定址法都有不能直接刪除元素的缺陷,需要透過標記刪除。標記為已刪除 的空間可以再次使用。當將新元素插入雜湊表,並且透過雜湊函式找到標記為已刪除的位置時,該位置可以 被新元素使用。這樣做既能保持雜湊表的探測序列不變,又能保證雜湊表的空間使用率。 Q:為什麼線上性探查中,查詢元素的時候會出現雜湊衝突呢? 查詢的時候透過雜湊函式找到對應的桶和鍵值對,發現 key 不匹配,這就代表有雜湊衝突。因此,線性探查 """ 層序走訪""" # 初始化佇列,加入根節點 queue: deque[TreeNode] = deque() queue.append(root) # 初始化一個串列,用於儲存走訪序列 res = [] while queue: node: TreeNode = queue.popleft() # 隊列出隊 res.append(node.val) # 儲存節點值 if0 码力 | 364 页 | 18.74 MB | 10 月前3Hello 算法 1.2.0 繁体中文 C++ 版
4.1.3 陣列典型應用 陣列是一種基礎且常見的資料結構,既頻繁應用在各類演算法之中,也可用於實現各種複雜資料結構。 ‧ 隨機訪問:如果我們想隨機抽取一些樣本,那麼可以用陣列儲存,並生成一個隨機序列,根據索引實現 隨機抽樣。 ‧ 排序和搜尋:陣列是排序和搜尋演算法最常用的資料結構。快速排序、合併排序、二分搜尋等都主要在 陣列上進行。 ‧ 查詢表:當需要快速查詢一個元素或其對應關係時,可 多次雜湊是開放定址的一種,開放定址法都有不能直接刪除元素的缺陷,需要透過標記刪除。標記為已刪除 的空間可以再次使用。當將新元素插入雜湊表,並且透過雜湊函式找到標記為已刪除的位置時,該位置可以 被新元素使用。這樣做既能保持雜湊表的探測序列不變,又能保證雜湊表的空間使用率。 Q:為什麼線上性探查中,查詢元素的時候會出現雜湊衝突呢? 查詢的時候透過雜湊函式找到對應的桶和鍵值對,發現 key 不匹配,這就代表有雜湊衝突。因此,線性探查 levelOrder(TreeNode *root) { // 初始化佇列,加入根節點 queuequeue; queue.push(root); // 初始化一個串列,用於儲存走訪序列 vector vec; while (!queue.empty()) { TreeNode *node = queue.front(); queue.pop(); // 隊列出隊 0 码力 | 379 页 | 18.79 MB | 10 月前3Hello 算法 1.2.0 繁体中文 Dart 版
4.1.3 陣列典型應用 陣列是一種基礎且常見的資料結構,既頻繁應用在各類演算法之中,也可用於實現各種複雜資料結構。 ‧ 隨機訪問:如果我們想隨機抽取一些樣本,那麼可以用陣列儲存,並生成一個隨機序列,根據索引實現 隨機抽樣。 ‧ 排序和搜尋:陣列是排序和搜尋演算法最常用的資料結構。快速排序、合併排序、二分搜尋等都主要在 陣列上進行。 ‧ 查詢表:當需要快速查詢一個元素或其對應關係時,可 多次雜湊是開放定址的一種,開放定址法都有不能直接刪除元素的缺陷,需要透過標記刪除。標記為已刪除 的空間可以再次使用。當將新元素插入雜湊表,並且透過雜湊函式找到標記為已刪除的位置時,該位置可以 被新元素使用。這樣做既能保持雜湊表的探測序列不變,又能保證雜湊表的空間使用率。 Q:為什麼線上性探查中,查詢元素的時候會出現雜湊衝突呢? 查詢的時候透過雜湊函式找到對應的桶和鍵值對,發現 key 不匹配,這就代表有雜湊衝突。因此,線性探查 levelOrder(TreeNode? root) { // 初始化佇列,加入根節點 Queuequeue = Queue(); queue.add(root); // 初始化一個串列,用於儲存走訪序列 List res = []; while (queue.isNotEmpty) { TreeNode? node = queue.removeFirst(); // 隊列出隊 res 0 码力 | 378 页 | 18.77 MB | 10 月前3Hello 算法 1.2.0 繁体中文 JavaScript 版
4.1.3 陣列典型應用 陣列是一種基礎且常見的資料結構,既頻繁應用在各類演算法之中,也可用於實現各種複雜資料結構。 ‧ 隨機訪問:如果我們想隨機抽取一些樣本,那麼可以用陣列儲存,並生成一個隨機序列,根據索引實現 隨機抽樣。 ‧ 排序和搜尋:陣列是排序和搜尋演算法最常用的資料結構。快速排序、合併排序、二分搜尋等都主要在 陣列上進行。 ‧ 查詢表:當需要快速查詢一個元素或其對應關係時,可 多次雜湊是開放定址的一種,開放定址法都有不能直接刪除元素的缺陷,需要透過標記刪除。標記為已刪除 的空間可以再次使用。當將新元素插入雜湊表,並且透過雜湊函式找到標記為已刪除的位置時,該位置可以 被新元素使用。這樣做既能保持雜湊表的探測序列不變,又能保證雜湊表的空間使用率。 Q:為什麼線上性探查中,查詢元素的時候會出現雜湊衝突呢? 查詢的時候透過雜湊函式找到對應的桶和鍵值對,發現 key 不匹配,這就代表有雜湊衝突。因此,線性探查 === /* 層序走訪 */ function levelOrder(root) { // 初始化佇列,加入根節點 const queue = [root]; // 初始化一個串列,用於儲存走訪序列 const list = []; while (queue.length) { let node = queue.shift(); // 隊列出隊 list.push(node.val);0 码力 | 379 页 | 18.78 MB | 10 月前3Hello 算法 1.2.0 繁体中文 TypeScript 版
4.1.3 陣列典型應用 陣列是一種基礎且常見的資料結構,既頻繁應用在各類演算法之中,也可用於實現各種複雜資料結構。 ‧ 隨機訪問:如果我們想隨機抽取一些樣本,那麼可以用陣列儲存,並生成一個隨機序列,根據索引實現 隨機抽樣。 ‧ 排序和搜尋:陣列是排序和搜尋演算法最常用的資料結構。快速排序、合併排序、二分搜尋等都主要在 陣列上進行。 ‧ 查詢表:當需要快速查詢一個元素或其對應關係時,可 多次雜湊是開放定址的一種,開放定址法都有不能直接刪除元素的缺陷,需要透過標記刪除。標記為已刪除 的空間可以再次使用。當將新元素插入雜湊表,並且透過雜湊函式找到標記為已刪除的位置時,該位置可以 被新元素使用。這樣做既能保持雜湊表的探測序列不變,又能保證雜湊表的空間使用率。 Q:為什麼線上性探查中,查詢元素的時候會出現雜湊衝突呢? 查詢的時候透過雜湊函式找到對應的桶和鍵值對,發現 key 不匹配,這就代表有雜湊衝突。因此,線性探查 levelOrder(root: TreeNode | null): number[] { // 初始化佇列,加入根節點 const queue = [root]; // 初始化一個串列,用於儲存走訪序列 const list: number[] = []; while (queue.length) { let node = queue.shift() as TreeNode; // 隊列出隊0 码力 | 384 页 | 18.80 MB | 10 月前3Hello 算法 1.2.0 繁体中文 Swift 版
4.1.3 陣列典型應用 陣列是一種基礎且常見的資料結構,既頻繁應用在各類演算法之中,也可用於實現各種複雜資料結構。 ‧ 隨機訪問:如果我們想隨機抽取一些樣本,那麼可以用陣列儲存,並生成一個隨機序列,根據索引實現 隨機抽樣。 ‧ 排序和搜尋:陣列是排序和搜尋演算法最常用的資料結構。快速排序、合併排序、二分搜尋等都主要在 陣列上進行。 ‧ 查詢表:當需要快速查詢一個元素或其對應關係時,可 多次雜湊是開放定址的一種,開放定址法都有不能直接刪除元素的缺陷,需要透過標記刪除。標記為已刪除 的空間可以再次使用。當將新元素插入雜湊表,並且透過雜湊函式找到標記為已刪除的位置時,該位置可以 被新元素使用。這樣做既能保持雜湊表的探測序列不變,又能保證雜湊表的空間使用率。 Q:為什麼線上性探查中,查詢元素的時候會出現雜湊衝突呢? 查詢的時候透過雜湊函式找到對應的桶和鍵值對,發現 key 不匹配,這就代表有雜湊衝突。因此,線性探查 levelOrder(root: TreeNode) -> [Int] { // 初始化佇列,加入根節點 var queue: [TreeNode] = [root] // 初始化一個串列,用於儲存走訪序列 var list: [Int] = [] while !queue.isEmpty { let node = queue.removeFirst() // 隊列出隊 list.append(node0 码力 | 379 页 | 18.79 MB | 10 月前3
共 15 条
- 1
- 2