![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
堆&栈&队列
文章平均质量分 63
LC520730
这个作者很懒,什么都没留下…
展开
-
剑指offer:JZ54 字符流中第一个不重复的字符
描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。后台会用以下方式调用Insert 和 FirstAppearingOnce 函数string caseout = “”;1.读入测试用例字符串casein2.如果对应语言有Init()函数的话,执行Init() 函数3.循环遍历字符串里的每一个字符ch {Insert(ch);原创 2021-10-13 21:23:33 · 90 阅读 · 0 评论 -
剑指offer:JZ58 对称的二叉树
描述请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。/* TreeNode类的代码public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/示例input1:{8,6,6,5,原创 2021-09-14 03:16:01 · 89 阅读 · 0 评论 -
剑指offer:JZ59 按之字形顺序打印二叉树
描述给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)例如:给定的二叉树是{1,2,3,#,#,4,5},该二叉树之字形层序遍历的结果是[[1],[3,2],[4,5]]#mermaid-svg-UMTOlpGWrOK9JKNf .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#merma原创 2021-09-14 02:35:56 · 82 阅读 · 0 评论 -
剑指offer:JZ60 把二叉树打印成多行
描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。例如:给定的二叉树是{1,2,3,#,#,4,5},该二叉树多行打印层序遍历的结果是[[1],[2,3],[4,5]]/* TreeNode类的代码public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val =原创 2021-09-14 01:33:46 · 116 阅读 · 0 评论 -
剑指offer:JZ61 序列化二叉树
描述请实现两个函数,分别用来序列化和反序列化二叉树,不对序列化之后的字符串进行约束,但要求能够根据序列化之后的字符串重新构造出一棵与原二叉树相同的树。二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树等遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串原创 2021-09-06 00:00:50 · 129 阅读 · 0 评论 -
剑指offer:JZ64 滑动窗口的最大值
描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个:{[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6,原创 2021-08-31 01:39:18 · 168 阅读 · 0 评论 -
剑指offer:JZ63 数据流中的中位数
描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。示例input:[5,2,3,4,1,6,7,0,8]output:5.00 3.50 3.00 3.50 3.00 3.50 4.00 3.50 4.00note:数据流里面不断吐出的是5,2,3...,则得原创 2021-09-02 00:51:23 · 119 阅读 · 0 评论 -
剑指offer:JZ62 二叉搜索树的第k个结点
描述给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。示例input:{5,3,7,2,4,6,8},3output:4note:按结点数值大小顺序第三小结点的值为4 思路本题中求二叉搜索树的第k小结点,由于二叉搜索树的特点:左子树<根结点<右子树,因此只需要对二叉搜索树进行中序遍历即可。遍历的方法有:递归、栈等。1、递归递归常常用于树的遍历。中序遍历时,递归需要先遍历左子树,然后根节点,最后右子树。递归的出口是null(由于求第k小结点,因此这里没有直接把原创 2021-09-02 01:53:39 · 102 阅读 · 0 评论