1.题目
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
2.思路分析
栈的特点是“先进后出”,即最先被压入(push)的元素会被最后一个弹出(pop)。
队列的特点是“先进先出”,即最先进入队列的元素会第一个出来。
两个数据结构的特点正好完全相反,那可以想到“负负得正”,创建两个栈,将第一个栈stack1中的元素放到第二个栈stack2中,使用两个“先进后出”栈实现一个先进先出的队列。总体的思路如下:
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
树是一种经典的数据结构,通常有以下三种遍历方式:
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
拿到字符串之后,很容易想到有两种方式完成替换。第一种:从头到尾遍历,在原字符串的基础上进行替换。这种方式的缺点在于靠后的字符串会多次移动,因此对于含有O(n)个空格字符的字符串而言时间复杂度是O(n2)。第二种:创建一个新的字符串,并在其上进行替换。这种方式需要我们自己分配足够的内存空间。
本文采用了一种使用从后向前遍历实现空格替换的方法,这种方法中所有的字符串只需要移动一次,因此这个算法的时间复杂度为O(n)。总体的算法步骤如下:
多终端管理的基本思路是将博客在Github网站上分为两个分支来管理:
hexo server
之后会在本地文件里生成public文件夹,public文件夹内是根据.md生成的html静态网站文件),我们在电脑上更新完博客之后可以hexo deploy
到该分支上,平时点进你的网站https://username.github.io/时看到的内容就是这个分支解析出来的。
首先明确在hexo博客的主题配置时,有两个文件经常会用到。一个是blog根目录下的_config.yml
文件,我们称其为站点配置文件,另一个则是themes\next
下的_config.yml
文件,我们称其为主题配置文件,在主题配置文件内next本身已自集成了一个统计算法,具体的用法如下:
Markdown是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用。看到这里请不要被「标记」、「语言」所迷惑,Markdown 的语法十分简单。常用的标记符号也不超过十个,这种相对于更为复杂的HTML标记语言来说,Markdown可谓是十分轻量的,学习成本也不需要太多,且一旦熟悉这种语法规则,会有一劳永逸的效果。