python - 使用 Python 和哈希表查找链表末尾的第 n 个节点

标签 python algorithm hash linked-list

我刚刚开始学习数据结构和算法。我正在使用 Narasimha Karumanchi (CareerMonk) 的“Data Structure and Algorithmic Thinking with Python”一书。

关于链表的题目,练习题之一是找到链表末尾的第n个节点。作者提到使用哈希表是比暴力破解更好的解决方案。

Screenshot from the book

作者省略了实现。我想知道如何在 Python 中将其编码为类方法或函数。我的意思是,在 C/C++ 中获取内存地址相对容易,但我不知道如何按照作者在书中建议的那样构造哈希表(字典)。

有人能帮忙吗?

谢谢

最佳答案

在 Python 中,您只需构造一个字典,其中键是链表中的索引,值是链表本身中的节点。您不需要知道节点的实际内存地址,因为将它们添加到字典中不会创建它们的副本,而是对原始对象的另一个引用。

因此您的代码将从某种集合开始,例如:

linked_index_to_node = {}

然后对于链表中的每一项,它会像这样添加:

# Making some assumptions about what your list looks like here
next_node = linked_list
next_index = 1
while next_node is not None:
    linked_index_to_node[next_index] = next_node
    next_index += 1
    next_node = next_node.next

关于python - 使用 Python 和哈希表查找链表末尾的第 n 个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40271237/

相关文章:

python : pass variable name as argument

python - 无法计算 Add as input #1(zero-based) 预计是一个 int32 张量,但它是一个双张量 [Op :Add]

ruby - 使用数组作为 ruby​​ 哈希键的用例

algorithm - 具有聚类特性的图像量化算法

bash - Bash 中的密码管理

ruby-on-rails - 获取 Hash 对象的循环次数

python - 如何根据Python中的列从DataFrame中复制行?

python - 如何在 Spacy 中获取所有名词短语

c++ - BST 中一个节点的所有父节点?

判断线程 "hotness"的算法