mirror of
https://github.com/krahets/hello-algo.git
synced 2024-12-26 14:16:28 +08:00
build
This commit is contained in:
parent
1dbe5ba3e1
commit
d16937ea8f
3 changed files with 18 additions and 10 deletions
|
@ -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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 扩容哈希表 */
|
/* 扩容哈希表 */
|
||||||
|
@ -554,12 +556,13 @@ comments: true
|
||||||
public void remove(int key) {
|
public void remove(int key) {
|
||||||
int index = hashFunc(key);
|
int index = hashFunc(key);
|
||||||
// 遍历桶,从中删除键值对
|
// 遍历桶,从中删除键值对
|
||||||
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 扩容哈希表 */
|
/* 扩容哈希表 */
|
||||||
|
|
|
@ -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. Q & A
|
## 6.4.1. Q & A
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue