【问题标题】:Find the nth node from the end of a Linked List using Python and hash table使用 Python 和哈希表从链表末尾查找第 n 个节点
【发布时间】:2017-03-09 08:21:57
【问题描述】:

我刚刚开始学习数据结构和算法。我正在使用 Narasimha Karumanchi(CareerMonk) 的“Python 的数据结构和算法思维”一书。

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

Screenshot from the book

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

谁能帮忙?

谢谢

【问题讨论】:

    标签: python algorithm hash linked-list


    【解决方案1】:

    在 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
    

    【讨论】:

    • 对不起,当你说值本身就是列表中的节点时,我不明白
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-28
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    相关资源
    最近更新 更多