![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法刷题
文章平均质量分 84
WSL-WLL
这个作者很懒,什么都没留下…
展开
-
补充关于2-3树、2-3-4树、B树、B+树、红黑树的相关内容,不从枯涩难懂的定义上理解,从BST的角度逐步理解
2-3树、2-3-4树定义:直接你看网上的各种文档,对于2-3的定义晦涩难懂,我们完全没有必要再次照着搬过来,我们这里采用的是和二叉排序树的对比的角度来考虑到底什么是2-3树。 2-3树 = 二叉排序树 + (2、3节点) + 每一个节点的左子树高度等于右子树的高度。那么我们队这个定义进行一个解读:二叉排序树本身就是左子树的值小于根节点的值,右子树的值大于根节点的值的一种二叉树,换句话说...原创 2020-04-03 21:20:16 · 591 阅读 · 2 评论 -
十大排序算法(内排序)
冒泡排序思路:第一项和第二项如果不满足既定顺序则交换。第二项和第三项如果不满足既定顺序则交换,满足既定顺序不交换,以此类推,可以发现一次排序下来...原创 2020-03-28 01:10:39 · 567 阅读 · 0 评论 -
关于满二叉树、完全二叉树以及完全二叉树的大根堆小根堆
满二叉树 完全二叉树的定义满二叉树就是每一层节点个数都是满的二叉树。第n层节点个数 = pow(2,n - 1), 总的节点个数 = pow(2, n)。 完全二叉树就是满二叉树从最后一层的最右侧开始去节点得的树,这个去节点只能从右往左去。 满二叉树 完全二叉树关于完全二叉树的几个面试题目一:判断是不是完全二叉树思路:层次遍历:当前节点左子树不空放入queu...原创 2020-03-20 21:28:23 · 1444 阅读 · 0 评论 -
补充关于二叉搜数树,平衡二叉树
再次介绍关于二叉搜索树二叉搜索树 == 二叉排序树 == 二叉查找树,从后面这两个名称来看,可见这个树对于排序和查找是非常关键的,上一节我们可以看到它的中序遍历是由小到大排序的,因此这就是二叉排序树的由来。那么对于二叉查找树,它为什么这么叫呢? 接下来我们从它的增加(插入、构建)、删除、查询、更改(增删查改)四个方面实现代码并且进行时间复杂度的分析。二叉树查找树的增加(插入、构建)...原创 2020-03-18 02:09:10 · 268 阅读 · 0 评论 -
剑指offer——二叉搜索树相关内容
首先明确二叉搜索树的概念二叉搜索树又叫二叉排序树,它的定义是: 1 空树是二叉搜索树 2:如果左子树存在,那么左子树的所有节点值均小于根节点; 如果右子树存在,右子树的所有节点值均大于根节点值。 3: 子树也是二叉排序树。 下面就是一颗二叉搜索树。 二叉搜索树的特点:基于此的常见考点就是下面的。 中序遍历是由小到大排序的(因此对于此二叉树转化双向排序列表、寻找第k小的数值、排序...原创 2020-03-13 19:15:44 · 121 阅读 · 0 评论 -
剑指offer——二叉树的基本理论和常见的题目以及处理方式
二叉树常见考点就是DFS和BFS,其中深度遍历DFS又分为前序遍历、中序遍历、后序遍历,实现方式又分为两种,递归方式以及循环方式。而BFS广度遍历又称层次遍历,实现方式是队列方式,非常容易实现。下面先构建一颗二叉树:如右图。 构建这个二叉树的原因就是这个二叉树有叶子节点,且有单只节点、有多个连续的单只节点,这基本覆盖了二叉树全部的特殊情况。 下面是构建二叉树的DFS的递归和非递归...原创 2020-03-12 16:57:45 · 119 阅读 · 0 评论 -
剑指offer——整数中1出现的次数、只有2,3,5质数的丑数、数组中只出现一次的俩个数
求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)这个题目当然可以采用暴力发处理:这个时间复杂度就大了,基本是O(mn),n是数字...原创 2020-03-03 14:40:42 · 294 阅读 · 0 评论 -
剑指offer——寻找两个单链表公共节点、循环链表应用及简化、链表环的判断
输入两个链表,找出它们的第一个公共结点。方法一:直接双重循环,O(n^2)时间复杂度,能实现,但时间复杂度太高,必不可行。Temp1 = pHead1Temp2 = pHead2while Temp1: while Temp2: if Temp1 == Temp2: return Temp2 else: ...原创 2020-02-28 21:39:22 · 271 阅读 · 0 评论 -
剑指offer—单链表的基本知识与构建、倒叙输出链表、合并双排序链表、复制复杂链表
对于单链表的基本写代码的注意点: 1:头节点传进来赋给一个新指针,以保存最开始节点不改变。 2:记忆单链表各种题目的一般模板: while temp: temp = temp.next 3:记忆传入的结构有2种:一种是None,另一种不是None,所以要判断 4:一般的处理新建一些节点,链表都能实现这个功能;但是为了节省空间复杂度,一般尽量利用单一变量在原...原创 2020-02-27 15:32:17 · 147 阅读 · 1 评论 -
剑指offer—栈最后一题(判断栈的弹出顺序是否是该栈的一种)(链表1:基本概念及python描述,单链表倒叙输出,倒叙存储,倒叙输出第k个)
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)本题目刚开始读的时候没有读懂,后来才读懂,那么当时思路就是:直接判断好像不太好处理,每一个...原创 2020-02-25 18:42:47 · 164 阅读 · 1 评论 -
剑指offer—有序数组查找及其变形、奇数在前偶数在后二分数组、模拟栈以及模拟min要求最低时间复杂度
有序数组查找:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0注意,这是一个有序数组的旋转,其实整体分为2个部分,仍然属于有序数组查找的变形,因此采用二分法。 在二...原创 2020-02-23 23:58:31 · 154 阅读 · 0 评论 -
剑指offer-数组相关(空格替换、二维有序数组查询、两个栈模拟队列)
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。补充C++/C知识关于指针: 人们常说指针就是地址,其实并不懂到底什么意思。其实指针是一个变量,普通的变量,类似于int,float这种变量,只不过它的变量类型是int *,float *等等,这个变量本身就是一个内存地址,...原创 2020-02-21 20:40:51 · 126 阅读 · 0 评论 -
剑指offer-费波纳数列
费波纳数列: n=0, F(0)=0; n=1,F(1)=1; n>1, F(n)=F(n-1)+F(n-2)这里面一定要注意的是n >= 0, 所以需要判断若n < 0 ,则直接return None.处理办法:第一种很自然的想到递归:def Fibonacci(n): #其实没必要关心n<0,因为此处测试实例这里...原创 2020-02-12 23:20:08 · 202 阅读 · 0 评论