我的算法总结

1.遍历一遍,删除链表倒数第N个节点

设置两个相距N的指针,一起移动即可


2.翻转链表

非递归和递归都要会

3.二叉树的层次遍历

需要借助队列,输出层级则带层级信息

4.队列实现栈,栈实现队列

二个可以实现

5.找数组中的最大的前n个数

利用最小堆(二叉树),存储前n个

6.TwoSum问题

使用map存储差值,遍历一遍即可,时间复杂度为O(n)

7.二叉树的层次遍历

队列 + BFS

8.二叉树的层次遍历二

递归+队列

9.二叉树的序列化和反序列化

序列化层次遍历,反序列化注意第一次入队列,队列的操作:size(),offer(),poll()

10.二叉树的前序遍历

使用栈,直接存即可,栈的操作:empty(),pop(),push()

11.二叉树的中序遍历

使用栈,curNode是左子节点

12.二叉树的后序遍历

超级复杂,需要添加preNode的中间变量,代码参考:https://www.jianshu.com/writer#/notebooks/35280545/notes/43332858

13.有序链表合并

一个head和一个next,合并即可

14.二叉树公共祖先

都用递归,注意祖先可以是自己,也可以两个都是自己

15.公共子串

dp问题,动态规划问题,转换成二维数组即可

16.链表交叉

取长度差值,再遍历,遍历3次

17.数组划分

左右相夹,最好先比较,再夹

18.第k大的数

用快速排序哦

https://blog.csdn.net/A__B__C__/article/details/88288590

19.链表排序

归并排序,merge, split,sort递归即可

19.查找旋转数组

递归查找,区分顺序列即可

20.重建二叉树

递归查找,区分顺序列即可

https://blog.csdn.net/u013132035/article/details/80519895

21.矩阵最短路径的和

https://blog.csdn.net/seagal890/article/details/95028066

链接代码有错误,不能取斜的指

你可能感兴趣的:(我的算法总结)