From d16937ea8f4c752d401848ef550b8269dd4865c5 Mon Sep 17 00:00:00 2001 From: krahets Date: Tue, 1 Aug 2023 17:06:10 +0800 Subject: [PATCH] build --- chapter_hashing/hash_collision.md | 24 ++++++++++++++++-------- chapter_hashing/summary.md | 2 +- chapter_stack_and_queue/deque.md | 2 +- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/chapter_hashing/hash_collision.md b/chapter_hashing/hash_collision.md index e15331aa5..87e7dd7e3 100644 --- a/chapter_hashing/hash_collision.md +++ b/chapter_hashing/hash_collision.md @@ -111,10 +111,12 @@ comments: true List bucket = buckets.get(index); // 遍历桶,从中删除键值对 for (Pair pair : bucket) { - if (pair.key == key) + if (pair.key == key) { bucket.remove(pair); + size--; + break; + } } - size--; } /* 扩容哈希表 */ @@ -316,7 +318,7 @@ comments: true if pair.key == key: bucket.remove(pair) self.size -= 1 - return + break def extend(self): """扩容哈希表""" @@ -422,10 +424,10 @@ comments: true if p.key == key { // 切片删除 m.buckets[idx] = append(m.buckets[idx][:i], m.buckets[idx][i+1:]...) + m.size -= 1 break } } - m.size -= 1 } /* 扩容哈希表 */ @@ -554,12 +556,13 @@ comments: true public void remove(int key) { int index = hashFunc(key); // 遍历桶,从中删除键值对 - foreach (Pair pair in buckets[index].ToList()) { + foreach (Pair pair in buckets[index].ToList()) { if (pair.key == key) { buckets[index].Remove(pair); + size--; + break; } } - size--; } /* 扩容哈希表 */ @@ -776,8 +779,13 @@ comments: true int index = hashFunc(key); List bucket = buckets[index]; // 遍历桶,从中删除键值对 - bucket.removeWhere((Pair pair) => pair.key == key); - size--; + for (Pair pair in bucket) { + if (pair.key == key) { + bucket.remove(pair); + size--; + break; + } + } } /* 扩容哈希表 */ diff --git a/chapter_hashing/summary.md b/chapter_hashing/summary.md index b3eb0525c..20443c1b0 100644 --- a/chapter_hashing/summary.md +++ b/chapter_hashing/summary.md @@ -15,7 +15,7 @@ comments: true - 不同编程语言采取了不同的哈希表实现。例如,Java 的 `HashMap` 使用链式地址,而 Python 的 `Dict` 采用开放寻址。 - 在哈希表中,我们希望哈希算法具有确定性、高效率和均匀分布的特点。在密码学中,哈希算法还应该具备抗碰撞性和雪崩效应。 - 哈希算法通常采用大质数作为模数,以最大化地保证哈希值的均匀分布,减少哈希冲突。 -- 常见的哈希算法包括 MD5, SHA-1, SHA-2, SHA3 等。MD5 常用语校验文件完整性,SHA-2 常用于安全应用与协议。 +- 常见的哈希算法包括 MD5, SHA-1, SHA-2, SHA3 等。MD5 常用于校验文件完整性,SHA-2 常用于安全应用与协议。 - 编程语言通常会为数据类型提供内置哈希算法,用于计算哈希表中的桶索引。通常情况下,只有不可变对象是可哈希的。 ## 6.4.1.   Q & A diff --git a/chapter_stack_and_queue/deque.md b/chapter_stack_and_queue/deque.md index 9d725cd2b..b439c07d2 100644 --- a/chapter_stack_and_queue/deque.md +++ b/chapter_stack_and_queue/deque.md @@ -1384,7 +1384,7 @@ comments: true class ListNode { var val: Int // 节点值 var next: ListNode? // 后继节点引用(指针) - var prev: ListNode? // 前驱节点引用(指针) + weak var prev: ListNode? // 前驱节点引用(指针) init(val: Int) { self.val = val