数据结构
不断提升编程素养
北木.
交流分享,共同成长
展开
-
数据结构常见问题系列(二)
文章目录1. 常用数据结构2. 什么是链表、队列、栈3. 什么是树(平衡二叉树、二叉排序树、B树、B+树、R树、红黑树)1. 常用数据结构1). 数组:顺序存储,随机访问。 链表:链表存储,顺序访问。2). 栈:分为栈顶和栈底,遵循先进后出的原则。3). 队列: 先进先出原则(类比成排队一样)。4). 树:二叉树、平衡二叉树、大、小顶堆等。5). 图:最短路径,关键路径。2. 什么是链表、队列、栈链表: 当需要存储多个相同数据类型的时候,可以使用数组存储,数组可以通过下标直原创 2020-11-06 11:17:05 · 1661 阅读 · 0 评论 -
数据结构常见问题系列(一)
文章目录1. 数组和链表的区别2. 简述快速排序3. 排序算法对比4. 稳定性5. 用循环比递归效率高吗?6. 解决哈希冲突的方法7. KMP算法8. B树1. 数组和链表的区别 1). 从逻辑结构来看,数组必须固定长度,数据不能动态增减,即数组的大小一旦定义就不能改变。当数据增加时,可能超过原先定义的元素的个数;当数据减少时,造成内存的浪费;链表动态进行存储分配,可以适应数据动态地增减的情况,且方便地插入、输出数据项。 2). 从内存存储的角度看,数组从栈中分配空间,对程序员方便快速,但是自原创 2020-11-03 22:56:26 · 3099 阅读 · 0 评论 -
数据结构之递归理论+代码
假设问题解空间是n的话,我们可考虑当n-1个盘子看成一个整体时,会怎样?def hanoi(n,a,b,c): if n > 0: hanoi(n-1, a,c,b) print("moving from %s to %s" %(a, c)) hanoi(n-1, b,a,c)hanoi(3,'A','B','C')敲完代码之后,还是得感叹自己需要好好学,科班学生强,加油点击这里看原视频...原创 2020-08-30 22:24:50 · 155 阅读 · 0 评论 -
LeetCode刷题前必须要知道的时间复杂度
LeetCode经常需要优化时间复杂度,在互联网面试的过程中也经常被介绍。看完视频清华计算机博士带你学习Python算法+数据结构之后,感觉以下几点讲的挺好的,故记录下:原因:强调的是大概的时间,不是精确的时间...原创 2020-08-30 21:30:57 · 991 阅读 · 0 评论 -
LeetCode刷题之动态规划的解题方法及相关练习(一)
注意: 切忌望文生义,用动态规划的名字反推算法!,实际上,动态规划更像是高中数列题的升级版。能用动态规划解决的问题需要满足的两点大问题拆分成小问题小问题被重复调用应用动态规划——将动态规划拆分成三个子目标1. 建立状态转移方程:一个思维:当知 f(1)~f(n-1)的值,然后想办法利用它们求得f(n)2. 缓存并复用以往结果如果没有合适的处理,时间复杂度很有可能会是指数型的3. 按顺序从小往大算例子:一. 斐波那契数列(简单)斐波那契数列:0, 1, 1, 2, 3, 5原创 2020-08-27 17:33:26 · 261 阅读 · 0 评论 -
详解Python中有关链表操作的理论知识及leetcode面试例题及要点分析
往期回顾: Python数据结构之链表 链表结构: 数组之后,链表结构是最常用的数据结构。引用维基百科中的话:链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表(数组)快得多,但是查找一个节点或者...原创 2020-07-21 08:46:40 · 243 阅读 · 0 评论 -
快乐的LeetCode之遍历二叉树之前序、中序、后序、层序
二叉树基础知识: 《大话数据结构》— “ 二叉树的遍历” 二叉树基础知识总结 剑指offer面试题06----重建二叉树 leetcode–94–二叉树的中序遍历二叉树的前中后序遍历可以用递归和迭代两种方式实现,层序遍历使用BFS(广度优先搜索)实现。递归实现:前序遍历:打印-左-右中序遍历:左-打印-右后序遍历:左-右-打印 二叉树前序遍历: 解题思...原创 2020-03-21 13:15:12 · 277 阅读 · 0 评论 -
多味的leetcode --- 94.二叉树的中序遍历
题目描述: 给定一个二叉树,返回它的中序 遍历。《大话数据结构》— “ 二叉树的遍历”示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2] 解题思路1: 按照left、mid、right的顺序递归的遍历二叉树 代码1: # Definition for a binary tree node.class Tr...原创 2020-03-21 10:36:47 · 171 阅读 · 0 评论 -
Python数据结构之链表
数据结构是计算机科学必须掌握的一门学问,之前很多的教材都是用C语言实现链表,因为c有指针,可以很方便的控制内存,很方便就实现链表,其他的语言,则没那么方便,有很多都是用模拟链表,不过这次,我不是用模拟链表来实现,因为python是动态语言,可以直接把对象赋值给新的变量。好了,在说我用python实现前,先简单说说链表吧。在我们存储一大波数据时,我们很多时候是使用数组,但是当我们执行插入...转载 2020-03-04 15:24:37 · 196 阅读 · 0 评论 -
剑指offer面试题08----翻转数组的最小数字
题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组 {3,4,5,1,2} 为 {1,2,3,4,5} 的一个旋转,该数组的最小值为 1。 NOTE:给出的所有元素都大于 0,若数组大小为 0,请返回 0。 解题思路: 首先这是一个特殊的有序数组,如果直接遍历一遍,找到最小值时间复杂度...原创 2020-02-25 17:11:47 · 302 阅读 · 0 评论 -
多味的LeetCode --- 剑指offer面试题 06. 重建二叉树
二叉树基础知识: 《大话数据结构》— “ 二叉树的遍历” 二叉树基础知识总结 题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列 {1,2,4,7,3,5,6,8} 和中序遍历序列 {4,7,2,1,5,3,8,6},则重建二叉树并返回。 解题思路: 首先依据前序遍历确...原创 2020-02-25 15:49:29 · 190 阅读 · 0 评论 -
《大话数据结构》— “ 二叉树的遍历”
二叉树的遍历 是指从根节点出发, 按照某种次序依次访问二叉树中所有结点, 使得每个结点被访问一次且仅被访问一次。 二叉树的遍历方式很多,如果我们限制了从左到右的习惯方式,那么主要就分为四种:(1 )前序遍历规则是: 若二叉树为空,则空操作返回。 否则先访...转载 2020-02-25 11:05:04 · 276 阅读 · 0 评论 -
二叉树基础知识总结
题外话昨晚面了腾讯,问了一个完全二叉树的题,竟然让我算了快10分钟,因为等比公式记错了导致最后用最原始的方法推算结果也没算对,一下子就懵了。本来精心准备了1周的面试,最后因为自己基础知识记忆不牢固导致了悲剧。不管怎样,还是要继续查漏补缺,准备将数据结构再细细看一遍,先来补上二叉树的这个漏洞吧。 一、...转载 2020-02-25 10:49:42 · 459 阅读 · 0 评论