B4__数据结构与算法
文章平均质量分 73
数据结构与算法
莫逸风
代码和人生需要加法也需要减法。
Nothing is impossible.
you can never be ready.
展开
-
神奇的数据——树形结构
树1. 树和二叉树1.1 什么是树树(tree)是n(n>=0)个节点的有限集。当n=0时,称为空树。在任意一个非空树中存在以下特点:有且仅有一个特定的点称为根节点。当n>1时其余的节点可分为m个互不相交的有限集,每一个集合本身又是一个树,并称为根的子树。1.1.1 名词:根节点(root):顶端没有“父亲”,称为根节点。叶子节点(leaf):末端没有“孩子”,称为叶子节点。父节点(parent):节点的上一级。孩子节点(child) :节点的下一级。兄弟节原创 2021-07-30 09:09:52 · 1122 阅读 · 0 评论 -
程序的基石——线性结构
2. 数据结构基础2.1 什么是数组2.1.1 概念数组对应的英文是array, 是有限个相同类型的变量所组成的有序集合, 数组中的每一个变量被称为元素。 数组是最为简单、 最为常用的数据结构。数组在内存中顺序存储(连续内存)2.1.2 数组的基本操作读取由于数组在内存中顺序存储, 所以只要给出一个数组下标, 就可以读取到对应的数组元素。 输入的下标必须在数组的长度范围之内, 否则会出现数组越界更新利用数组下标, 就可以把新值赋给该元素插入尾部插入:直接把插入的元素放原创 2021-06-22 21:19:01 · 743 阅读 · 1 评论 -
入门数据结构与算法,看这一个就够了,知识点+LeetCode实战演练
本笔记来自拉钩教育300分钟搞定算法面试算法与数据结构要掌握一种数据结构,就必须要懂得分析它的优点和缺点。在考虑是否应当采用一种数据结构去辅助你的算法时,请务必考虑它的优缺点,看看它的缺点是否会阻碍你的算法复杂度以及空间复杂度。数组数学 概率 线性代数 论证数据结构 字符串 字典树 后缀树 数组 链表 单、双向链表 跳舞链 快慢指针 队列、栈 树、图 最近公共指针 并查集 堆 大小跟堆 可并堆 哈希表编程能力 语言熟练度 代码整洁原创 2020-09-29 01:55:54 · 1199 阅读 · 4 评论 -
栈(Stack)
特点:栈最大的特点就是后进先出(LIFO)。对于栈中的数据来说,所有操作都是在栈的顶部完成的,只可以查看栈顶部的元素,只能够向栈的顶部压入数据,也只能从栈的顶部弹出数据。实现:利用一个单链表来实现栈的数据结构。而且,因为我们都只针对栈顶元素进行操作,所以借用单链表的头就能让所有栈的操作在O(1)的时间内完成。应用场景:在解决某个问题的时候,只要求关心最近一次的操作,并且在操作完成了之后,需要向前查找到更前一次的操作。LeetCoded第20题题解–有效的括号LeetCoded第739题题解–每原创 2020-10-18 22:07:15 · 1007 阅读 · 0 评论 -
队列(Queue)\双端队列(Deque)
队列(Queue)\双端队列(Deque)队列(Queue)双端队列(Deque)算法应用队列(Queue)特点:和栈不同,队列的最大特点是先进先出(FIFO),就好像按顺序排队一样。对于队列的数据,我们只允许在队尾查看和添加数据,在队头查看和删除数据。实现:可以借助双端队列来实现队列。双链表的头指针允许在队头查看和删除数据,而双链表的尾指针允许我们在队尾查看和添加数据。应用场景:当我们需要按照一定的顺序来处理数据,而该数据的数据量在不断变化的时候,则需要队列来帮助解题。在算法面试中,广度优先原创 2020-10-24 23:31:16 · 1710 阅读 · 0 评论 -
面试必备常用数据结构详解+例题解析(持续更新。。。)
.常用数据结构一、数组、字符串二、链表(LinkedList)三、栈(Stack)四、队列(Queue)五、双端队列(Deque)六、树(Tree)树的遍历常用数据结构数组、字符链表栈队列双端队列树一、数组、字符串掌握一种数据结构,就必须要懂得分析它的优点和缺点。数组的优点构建非常简单能在O(1)的时间里根据数组的下标(index)查询某个元素数组的缺点构建时必须分配一段连续的空间查询某个元素是否存在时需要遍历整个数组,耗费O(n)的时间删除和添加某个元素时,同样需原创 2020-11-03 01:12:25 · 1346 阅读 · 0 评论 -
树、树的遍历
树常见的树有:普通二叉树、平衡二叉树、完全二叉树、二叉搜索树、四叉树(Quadtree)、多叉树(N-ary Tree)。对于一些特殊的树,例如红黑树(Red-Black Tree)、自平衡二叉搜索树(AVL Tree),一般在面试中不会被问到,除非你所涉及的研究领域跟他们相关或者你十分感兴趣,否则不需要特别着重准备。树的遍历1. 前序遍历方法: 先访问根节点,然后访问左子树,最后访问右子树。在访问左子树、右子树的时候,同样,先访问子树的根节点,再访问子树根节点的左子树和右子树,这是一个不断递归的原创 2020-10-27 01:06:24 · 1044 阅读 · 0 评论 -
时间复杂度与空间复杂度
时间复杂度与空间复杂度1.复杂度是什么2. 复杂度的计算方法遵循以下几个原则3. 时间复杂度与代码结构的关系4. 降低时间复杂度的必要性5. 总结1.复杂度是什么复杂度是衡量代码运行效率的重要度量因素。代码执行过程中会消耗计算时间和计算空间,那需要衡量的就是时间复杂度和空间复杂度。一般情况下代码消耗的资源不会是一个绝对量,他们的消耗程度都与输入的数据量高度相关。为了更客观地衡量消耗程度,我们通常会关注时间或空间消耗量与输入数据量之间的关系复杂度是一个关于输入数据量 n 的函数,假设原创 2020-12-29 01:58:39 · 2047 阅读 · 0 评论