程序=数据结构+算法
结构来看:变量,列表=数组
数据怎么存储,就是数据结构
整个就是一个过程,修改这个过程就是算法
数据是静态 ,算法是动态,加起来就是程序
时间复杂度:大O表示法






斐波那契数列O(n^2)


二分法查找




数组和链表
数组:就像在app上看连续几,可以自选哪一集观看
链表:就像电视台播放连续剧,只能等一集一集的播放.


线性表

顺序表
数组

引用数组

动态数组

链表
单向链表

双向链表

插入:创建新节点-next指针设置为空-头/尾指针指向新节点

反转链表

链表交换相邻元素

探测环


栈,队列:都是线性的容器
堆栈stack: 先进后出
入栈 # q.append(‘first‘)
出栈 # print(q.pop(-1))

队列queue: 先进先出
入队 # q.append(‘first‘)
出队 # print(q.pop(0))


string判断,{[()]}是否完整


用堆栈实现队列

实时判断数据流中第K大元素


滑动窗口最大值



map vs set, hash

hash碰撞:放列表(拉链法)


有效的字母异位词



两数之和


三数之和



树,二叉树,二叉搜索树
二叉树:每个节点只有两个孩子

图

二叉搜索树


验证二叉搜索树




二叉树搜索树的最近公共祖先



二叉树的遍历

算法
递归Recursion和分治

Pow(x,n)


求众数

贪心算法greedy

36元最少需要多少张纸币


买卖股票的最佳时机


广度优先搜索BFS

深度优先搜索DFS

二叉树的层次遍历


数据结构与算法
原文:https://www.cnblogs.com/du-jun/p/10457581.html