算法设计与分析常见思路和模板

计算时间复杂度的必备技能

 

1.判断循环什么时候结束

2.观察函数被调用了多少次(适用于递归,动态规划问题)

while i < n:
    i=i*2
while i < n:
    i=i+i

实在不行举个例子,i=1,2,4,8,2^m

递归解题模型

原则:先写递归出口(终止条件),再写递归体

二分问题解题模板

1.为什么中间值的获取要+1呢?
int mid = left +(right-left + 1)/2;
2.为什么while循环要<而不是<=呢?
while(left < right)
3.为什么返回的不是left呢?
return right;

参考链接:https://www.youtube.com/watch?v=fvIrI4ph1lA&list=PLV5qT67glKSErHD66rKTfqerMYz9Oahttps://www.youtube.com/watch?v=fvIrI4ph1lA&list=PLV5qT67glKSErHD66rKTfqerMYz9Oa

总的原则:不断缩小搜索空间,每次搜索不能排除潜在答案

三套解题模板:

        1.假如是找确定值:

                循环条件是left<=right

                left=mid+1;right=mid-1

        2.假如找模糊值

                循环条件是left < right

                        如何保证个数是偶数的时候不会死循环

                                mid = (left+right-left+1)/2

                left = mid ;right = mid-1

        3.通用型(一定不会错)

                循环条件是left < right-1

                left = mid ;right=mid

 Linked List链表题型模板

原则:两个指针指向Linked List节点,不再是index两个指针必定同向而行
1.一个快一个慢,距离隔开多少

2,两个指针移动速度

        

用空间换时间

缓存就是用空间换时间

发现排序问题 类内有序

1.用于计数问题 根据类别制作容器

计算式与记录式的转化

计算式是通过计算得到的,节省空间

记录式是通过查询得到的,节省时间

利用常见数据结构的特性

单链表的特性

        原理

        1.只能找到下一个元素,不能找到上一个元素

        2.指针改变就无法找到原来指针指向的数

        方法论

        1.先保存指针再给指针赋值

                这样做的意义

                        遵循原理2

                        最后把指针赋值给迭代器,确保程序进行

        2.

必背知识

 1.选泡插
快归堆希统计基,恩方恩老恩一三,对恩加K恩乘K,不稳稳稳不稳稳不稳不稳稳稳稳!

2.线性查找 —性能低—二分查找— 二查叉树会出现退化成链表的问题—出现AVL平衡二叉树—数据变化有频繁更新节点问题—出现红黑树

AVL平衡树比红黑树更适合查找,红黑树比AVL平衡树更适合插入删除

3.链表和树的关系?

链表是一种特殊的树

节点只有一个指针域就是链表

节点有两个指针域就是二叉树

二叉树为两个指针域起了名字叫左右孩子

4.树的孩子为什么叫度?

 树来源于图,树只有出度

5.如何区分前中后序遍历?

根据输出序列中根节点所在的位置区分的

本质上就是递归

前序遍历就是先遍历根,再遍历左子树,再遍历右子树

6.完全二叉树需要子树的地址吗?

1、编号为i的子节点:
左孩子编号:2*i
右孩子编号:2*i +1
2、可以用连续空间存储(数组)

所以可以节省大量空间

7.树为什么重要

树节点和边的本质

树的节点代表集合,树的边代表关系,子树代表父节点互不相交的子集,父亲节点和子节点的关系是全集和子集的关系

8.堆排序的口诀

1、将堆顶元素与堆尾元素交换
2、将此操作看做是堆顶元素弹出操
3、按照头部以后的策略调整堆

9.堆和队列的关系

   堆是优先队列的实现方式

   堆和队列都是一头进一头出

   堆弹出的是队列的最大值或者最小值,就是弹出队列中最优先的值

10.并查集的应用场景

维护和查询连通性

11.并查集的quick find算法为什么叫quick find

因为查询是o(1),合并是o(n)

おすすめ

転載: blog.csdn.net/weixin_45955767/article/details/121186531