{{ selected_gold.title }}

  • ¥ {{ selected_gold.original_price }}
  • ¥ {{ selected_gold.price }}
  • {{ selected_gold.number_of_order }} 人订阅
  • {{ selected_gold.total_likers_count }}
    由 {{ selected_gold.creator_name }} 编辑

    {{ title }}

    请登录购买({{ selected_gold.price }}元),即可解锁剩余教程
    点击购买

    • Air
    • 2020年12月18日

    常见的编程问题

    以下问题是软件研发工程师在面试过程中经常遇到的,因此,在面试之前,你至少需要知道它们的解题思路,最好的情况是:对于每一道题目,你都可以用熟悉的编程语言来编写和调试!

    • 实现一个优先级队列
    • 给定一个整型数组,从中查找前M个最大的元素
    • 最接近原点的M个点

    以上题目有一个共性:前M个元素。如果你遇到类似的题目,那么你的第一反应应该是使用堆数据结构。因此,你需要对堆数据结构的基本操作非常了解,比如,如何建立一个堆?如何从堆里取元素并重建堆?如何向堆里添加元素,并重建堆?这些操作的时间复杂度分别是什么?等等。关于堆的基础知识,你可以参考文章-堆(heap)。对于以上问题的编程答案,你可以参考文章-与堆相关的编程问题

    • 有一棵树,用水从根节点Root往下倒,每条边代表水停留的时间,求水流经过所有叶子节点所需的时间。