![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
阿越coding
Fighting!
展开
-
105. 从前序与中序遍历序列构造二叉树
105. 从前序与中序遍历序列构造二叉树先找根节点,即前序遍历的第一个元素。再找根节点在中序遍历中的索引,将前序、中序遍历划分为两半,来递归构造左右子树。class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { return build(preorder, 0, preorder.length - 1, inorder, 0, i原创 2021-06-22 17:56:04 · 102 阅读 · 0 评论 -
Leetcode 297.二叉树的序列化与反序列化
297. 二叉树的序列化与反序列化序列化时,若当前节点为空,则加入 # 号并返回。否则,加入当前节点值,再递归左右子树。反序列化时,先将字符串转换为列表,再确定根节点,即列表首个元素,再递归生成左右子树。public class Solution { StringBuilder sb = new StringBuilder(); String Serialize(TreeNode root) { serialize(root);原创 2021-06-22 17:45:11 · 98 阅读 · 0 评论 -
Leetcode 239.滑动窗口的最大值
滑动窗口的最大值先使用双向链表构建一个单调递减队列,有三个方法:push 在队尾添加元素,但要将前面比它小的元素删除。 max 返回最大元素,即队头pop 若元素为队头,则删除(判断是因为有可能被压扁了,已经不存在了)然后,遍历数组,先把队列前 k - 1 个填满,再开始向前滑动移入新元素,再记录最大值,再移出旧元素。public class Solution { class MonotonicQueue { // 双链表,支持头部和尾部增删元素原创 2021-06-22 17:30:06 · 111 阅读 · 0 评论