This commit is contained in:
krahets 2023-08-01 17:06:10 +08:00
parent 1dbe5ba3e1
commit d16937ea8f
3 changed files with 18 additions and 10 deletions

View file

@ -111,10 +111,12 @@ comments: true
List<Pair> bucket = buckets.get(index); List<Pair> bucket = buckets.get(index);
// 遍历桶,从中删除键值对 // 遍历桶,从中删除键值对
for (Pair pair : bucket) { for (Pair pair : bucket) {
if (pair.key == key) if (pair.key == key) {
bucket.remove(pair); bucket.remove(pair);
size--;
break;
}
} }
size--;
} }
/* 扩容哈希表 */ /* 扩容哈希表 */
@ -316,7 +318,7 @@ comments: true
if pair.key == key: if pair.key == key:
bucket.remove(pair) bucket.remove(pair)
self.size -= 1 self.size -= 1
return break
def extend(self): def extend(self):
"""扩容哈希表""" """扩容哈希表"""
@ -422,10 +424,10 @@ comments: true
if p.key == key { if p.key == key {
// 切片删除 // 切片删除
m.buckets[idx] = append(m.buckets[idx][:i], m.buckets[idx][i+1:]...) m.buckets[idx] = append(m.buckets[idx][:i], m.buckets[idx][i+1:]...)
m.size -= 1
break break
} }
} }
m.size -= 1
} }
/* 扩容哈希表 */ /* 扩容哈希表 */
@ -557,9 +559,10 @@ comments: true
foreach (Pair pair in buckets[index].ToList()) { foreach (Pair pair in buckets[index].ToList()) {
if (pair.key == key) { if (pair.key == key) {
buckets[index].Remove(pair); buckets[index].Remove(pair);
size--;
break;
} }
} }
size--;
} }
/* 扩容哈希表 */ /* 扩容哈希表 */
@ -776,8 +779,13 @@ comments: true
int index = hashFunc(key); int index = hashFunc(key);
List<Pair> bucket = buckets[index]; List<Pair> bucket = buckets[index];
// 遍历桶,从中删除键值对 // 遍历桶,从中删除键值对
bucket.removeWhere((Pair pair) => pair.key == key); for (Pair pair in bucket) {
size--; if (pair.key == key) {
bucket.remove(pair);
size--;
break;
}
}
} }
/* 扩容哈希表 */ /* 扩容哈希表 */

View file

@ -15,7 +15,7 @@ comments: true
- 不同编程语言采取了不同的哈希表实现。例如Java 的 `HashMap` 使用链式地址,而 Python 的 `Dict` 采用开放寻址。 - 不同编程语言采取了不同的哈希表实现。例如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. &nbsp; Q & A ## 6.4.1. &nbsp; Q & A

View file

@ -1384,7 +1384,7 @@ comments: true
class ListNode { class ListNode {
var val: Int // 节点值 var val: Int // 节点值
var next: ListNode? // 后继节点引用(指针) var next: ListNode? // 后继节点引用(指针)
var prev: ListNode? // 前驱节点引用(指针) weak var prev: ListNode? // 前驱节点引用(指针)
init(val: Int) { init(val: Int) {
self.val = val self.val = val