Try Dan's Challenges!
A selection of my projects, experiments and assorted repos.
A journal of my open source contributions, projects, and experiments.
A code + schema generator for JSON or CSV input.
A functional and fluent API built around native JavaScript promises.
High performance image resizing and streaming proxy for Node.js.
A powerful key-value service with several database adapters.
A modern app starter using TS, Vite, React, Tailwind CSS, and more.
Coder | LeaderThinker | Tinkerer
<form>
你能忽悠二叉树吗?
欢迎来到我的数据结构与算法测验!
本测验将考察你对数据结构(栈、列表、树等)、算法以及时间复杂度的掌握程度。
哪种数据结构最适合LIFO(后进先出)的访问模式?
关注访问模式,而不是结构的名称。正确答案通常取决于哪个元素先发生或后发生。
栈最适合LIFO访问模式。队列最适合FIFO(先进先出)访问模式。
无论输入规模如何,运行时间始终相同的算法的时间复杂度是什么?
关注访问模式,而不是结构的名称。正确答案通常取决于必须先发生或最后发生什么。
O(1) 表示常数时间复杂度。这意味着无论输入规模如何,算法的运行时间始终相同。
计算单向链表长度的时间复杂度是多少?
关注访问模式,而不是结构名称。正确答案通常取决于必须先发生或最后发生什么。
要计算单向链表的长度,必须从头到尾遍历每个节点,因此时间复杂度为 O(n)。
在平衡二叉搜索树中查找元素的平均时间复杂度是多少?
关注访问模式,而不是结构的名称。正确答案通常取决于必须首先或最后发生的事情。
在平衡二叉搜索树中,查找的平均时间复杂度为O(log n),因为每一层都将搜索空间减半。
归并排序算法在最坏情况下的时间复杂度是多少?
关注访问模式,而不是结构的名称。正确答案通常取决于必须先发生或最后发生的事情。
归并排序始终以 O(n log n) 的最坏情况复杂度运行,因为它反复将数组分成两半并合并排序后的子数组。
广度优先搜索(BFS)通常使用什么数据结构来实现?
关注访问模式,而不是结构的名称。正确答案通常取决于必须先处理还是后处理什么。
BFS 使用队列逐层探索节点,以广度优先的方式(按“行”)处理节点。
哪种算法常用于检测有向图中的环?
关注访问模式,而不是结构名称。正确答案通常取决于必须最先或最后发生的事情。
深度优先搜索(DFS)通常用于检测图中的环,它通过维护一个递归栈来跟踪已访问的节点。
在最坏情况下,堆排序的时间复杂度是多少?
关注访问模式,而不是结构的名称。正确答案通常取决于必须先发生什么或最后发生什么。
堆排序在最坏情况下的时间复杂度为 O(n log n),因为它需要构建一个堆并反复提取最大元素。
在哈希表中访问一个元素的平均时间复杂度是多少?
关注访问模式,而不是结构名称。正确答案通常取决于必须先发生或最后发生的事情。
哈希表在访问元素时的平均时间复杂度为 O(1),前提是有一个良好的哈希函数,能够最小化冲突。
哪一组包含栈的典型操作?
关注访问模式,而不是结构的名称。正确答案通常取决于最先或最后发生什么。
栈的主要操作是压栈(添加元素)、出栈(移除元素)和查看栈顶(查看顶部元素而不移除)。
哪种算法常用于在具有非负权重的加权图中寻找最短路径?
关注访问模式,而不是结构的名称。正确答案通常取决于必须最先或最后发生的事情。
迪杰斯特拉算法常用于在具有非负边权重的图中寻找最短路径。它使用优先队列来高效地确定最短距离。
以下哪一组包含了自平衡二叉搜索树数据结构的例子?
AVL树和红黑树是自平衡树的类型,它们确保每次插入或删除后树保持平衡。
在递归函数中,必须定义什么来防止无限递归?
在递归函数中,基例是必要的,当满足特定条件时停止递归调用,从而防止无限递归。
队列的两个基本操作是什么?
关注访问模式,而不是结构的名称。正确答案通常取决于哪个操作必须先发生或后发生。
队列的两个基本操作是入队(在队尾添加元素)和出队(从队首移除元素)。
对图进行拓扑排序需要满足什么条件?
关注访问模式,而不是结构的名称。正确答案通常取决于什么必须最先或最后发生。
拓扑排序可以在有向无环图(DAG)上进行。这种排序在任务调度问题中非常有用。
朴素递归实现斐波那契数列的时间复杂度是多少?
朴素递归实现斐波那契数列的时间复杂度为 O(2^n),因为每个斐波那契数都有大量重复计算。
哪种数据结构通常用于实现优先队列?
关注访问模式,而不是结构的名称。正确答案通常取决于哪个元素必须最先或最后处理。
优先队列最常使用堆来实现,因为它可以高效地提取最高或最低优先级的元素。
哪一组列出了二叉树的常见深度优先遍历顺序?
中序、前序和后序是二叉树的三种常见深度优先遍历顺序,每种顺序访问节点的次序不同。广度优先遍历也很常见,但它属于不同的遍历类别。
关于最小堆,以下哪些性质是正确的?
在最小堆中,根节点始终是最小的元素,树的高度为 O(log n),这使得插入和提取操作高效。
冒泡排序算法是稳定的吗?
冒泡排序是一种稳定的排序算法,因为它在排序过程中保持了相等元素的相对顺序。