常数阶,他的次数不会随着n的变大而变长
没有循环 没有递归没有跟n相关的东西,那么他的复杂度就是o(1)
为什么i=i*2那里会加1阿?
因为需要加一次才能跳出循环1 2 4 8
中间加二是为了判断
循环的判断普遍比循环体多一个所以圈2的地方n+1
i和j两个才完成一个o(n)的复杂度,完成代码的交换
这里没开辟新空间 只是定义了两个变量 所以是常数级别 O(1)
之前的是时间复杂度假设是f(n)转成o()这个记号,肯定比原来的大。
渐进上界的括号内要大于等于等式左边的计算结果,渐进下界的括号内要小于等于等式左边的计算结果,渐进紧致界括号内的只能等于等式左边的计算结果
渐进紧致阶只要上面有一个错的就都是错的
说白了就是,看见第一个符号,结果就要大于等于他,第二个就是结果小于等于,第三个就只能等于
https://www.bilibili.com/video/BV1f44y1A7rx?p=16&spm_id_from=pageDriver&vd_source=6092f2dd634d869c97e5d08dde6f3844
插入实现转载b站观看到36分钟
删除n分支1的元素 删除第一个就是移动n-1,最后一个移动0个
查找最好的情况是找到了最坏的情况是找不到都是一句话所以复杂度为o(1)
后面有足够的空间才能原地扩容,如果后面的空间不够就回去随机找一个地址扩容,这样代价很大
线性表:多开了一个空间 用于存储额外的信息
第一个没有前驱,最后一个没有后继
https://www.bilibili.com/video/BV1f44y1A7rx?p=24&vd_source=6092f2dd634d869c97e5d08dde6f3844 从16分钟开始
不带头结点的是指针指向空NULL,带头结点第一个节点不存储数据,只存储地址,就框框左边是空右边是下一个的地址
指针不初始化默认为空
不带,删除的位序k>1没有问题,k=1的话就有问题了
最后尾节点不会指向空,会指向头结点 直接链起来
双链表就是比单链表多了一个指针域 指向前一个节点 就可以实现某节点都可以找到自身的上一个节点和下一个节点
删除需要循环所以是o(n)
相当于日常生活中的排队
final全局常量
这题目的意思就是这个队列在进元素的时候 可以在头和尾进 出只能在头出
入栈出栈后立马进入队列
队列出队和入队序列一样同时也是出栈序列
c确定后就不需要扩容,所以顺序存储效率更高
字串就是可以拆开另算的
空串是任意串的子串
串有主串和模式串
从主串中找到一个和模式串相等的字串匹配成功返回指向 子串的起始位置,匹配失败如果从1开始返回0从0开始返回-1
二维数组就是一个矩阵
二维数组压缩在一个一维数组里
转化为一维数组
**等差数列求和的公式 **
i<=j是下三角
十字链表
兄弟就是他们呢几个有共同的父节点他们几个就是兄弟
父节点有几个子节点就是有几个度
度为0是的叶子节点
度不为零的节点为分支节点
树的度为最大节点的度
2.x意思是两行还多
完全二叉树适合顺序存储
双亲就是父节点
单支树是除了叶子节点都是1
最后一个肯定是跟节点,所以后序的bca都是跟节点,找到根节点后再跑到中序里
**求节点个数 **
这里的n注意是题目给的n值,而不是树的高度
因为3位数的二进制可以表示6个字符,而2位只能表示4个,而这里有abcde5个字符
完全二叉树第一层到h-1层必须是满的所以排除a
左右高度之差不为1所以不是平衡二叉树

无向图就是用首相加尾相乘以项数除以2
在权值里两个顶点没有边的话就用无穷表示
当前所处的顶点还有邻接的顶点(出边)并且没有被访问过的话那么他就回去访问这些顶点
https://www.bilibili.com/video/BV1jY411b73f/?p=185&spm_id_from=pageDriver&vd_source=6092f2dd634d869c97e5d08dde6f3844
深度只要顶点还能访问就会一直访问下去
广度优先是先访问临界点访问完了。 直接写下来
上图就是访问v1得到的
如果要完成顶点3应该先完成顶点3的直接前驱活动
aov网是个有向无环图