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);
// 遍历桶,从中删除键值对
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
}
/* 扩容哈希表 */
@ -557,9 +559,10 @@ comments: true
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<Pair> 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;
}
}
}
/* 扩容哈希表 */

View file

@ -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. &nbsp; Q & A

View file

@ -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