leetcode 20
此时栈顶的左括号和当前遍历的右括号匹配,故将左括号从栈顶pop出。
leetcode 150:
leetcode 71
栈和递归的关系
递归算法:二叉树中的算法
、二叉树的前序遍历,中序遍历,后序遍历
前序遍历代码:
练习题:使用栈模拟系统栈,写出非递归程序
模拟在栈中推入命令
访问根节点:
相应的推入
此时栈顶是打印1,1出来,然后访问1的左孩子,其实就是访问点2
访问后,相应的将2的3个命令相应的推入
访问2的左右孩子,由于均为空,直接取出命令,最后访问1的右孩子3
将3 的三条命令推入栈,然后循环结束
练习:经典非递归方法,去理解递归过程
练习题:leetcode:
1 理解整形列表
迭代遍历: hasNext判断是否遍历到了最后一项
next()去访问后面一个元素
6-46 队列
队列的基本应用-广度优先便利
树;层次遍历
图;无权图的最短路径
leetcode 102
关键点:标记点在那个层
练习题:
leetcode 107
leetcode 103
leetcode 199
BFS(广度优先遍历)和图的最短路径
leetocode 279
最少的平方数:
思考:如果没有解怎么办?
是否可能没有解?不可能,因为有1
边界情况是否为真的边界情况
大数指向小数
数据对:第一个数表示具体第几个数字 第二数表示经历了几段路径到达该点
性能问题:num-i*i会重复推入队列,冗余的节点
改进:
这个相对上一版会快3倍左右
leetcode 127
衍生题:
leetcode 126
使用队列求解无权图最短路径
优先队列
优先队列的底层实现:堆
对于堆的底层实现,白板编程
使用优先队列解决算法问题:
优先对列屏蔽了堆的具体实现过程
优先队列,默认情况下是最大堆:从大到小
最小堆的实现:从小到大
如果自定义了:
个位数越大越靠前
6-7
leetcode 347
当其中的n和k比较接近时,可以采用以下的思路:
leetcode 23
k分的归并排序
具体k去多大的时候,该归并排序最优