📜  门| GATE CS Mock 2018年|套装2 |第59章(1)

📅  最后修改于: 2023-12-03 15:28:39.691000             🧑  作者: Mango

门 GATE CS 模拟试卷 2018 年 - 套装 2

这是 GATE(印度 IT 行业的招聘考试)的模拟试卷,是为那些希望在计算机科学领域追求高级学位、工作或其他职业发展机会的人准备的。

第 59 题

这是一道关于哈希表的问题:给定一个大小为 $n$ 的哈希表,其中包含 $n/2$ 个元素。如果某个元素插入哈希表后造成冲突,则该元素将插入其相应链的末尾。如果只有 $d$ 个元素不在其相应的链接末尾,那么 $d$ 的最小值是多少?

解答

假设每个链表的长度为 $m$,则链表将包含 $n/2m$ 个元素。在最坏的情况下,每个链表已包含 $m$ 个元素,则有 $r$ 个元素不能插入其相应链接的末尾,其中 $r$ 是 $m$ 的值使 $r > m/2$ 的最小整数。例如,当 $m=3$ 时,$r=2$; 当 $m=4$ 时,$r=3$。

因此,当 $n/2m=1$ 时,即 $n=2m$ 时,$d$ 的最小值是 $2r$。因此,为了最小化 $d$,我们需要找到最小的 $m$,使 $n/2m = 1$。我们有:

$$ \frac{n}{2m} = 1 \Rightarrow m = \frac{n}{2} $$

因此,当 $m=n/2$ 时,$d$ 的最小值为 $2r$。根据上述分析,我们选择 $m = \lceil \sqrt{2n} \rceil$ ,这样可以使 $d$ 的最小值最小化。

代码
假设每个链表的长度为 $m$,则链表将包含 $n/2m$ 个元素。在最坏的情况下,每个链表已包含 $m$ 个元素,则有 $r$ 个元素不能插入其相应链接的末尾,其中 $r$ 是 $m$ 的值使 $r > m/2$ 的最小整数。例如,当 $m=3$ 时,$r=2$; 当 $m=4$ 时,$r=3$。

因此,当 $n/2m=1$ 时,即 $n=2m$ 时,$d$ 的最小值是 $2r$。因此,为了最小化 $d$,我们需要找到最小的 $m$,使 $n/2m = 1$。我们有:

$$
\frac{n}{2m} = 1 \Rightarrow m = \frac{n}{2}
$$

因此,当 $m=n/2$ 时,$d$ 的最小值为 $2r$。根据上述分析,我们选择 $m = \lceil \sqrt{2n} \rceil$ ,这样可以使 $d$ 的最小值最小化。