0%

1.题目

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

2.思路分析

栈的特点是“先进后出”,即最先被压入(push)的元素会被最后一个弹出(pop)。
队列的特点是“先进先出”,即最先进入队列的元素会第一个出来。
两个数据结构的特点正好完全相反,那可以想到“负负得正”,创建两个栈,将第一个栈stack1中的元素放到第二个栈stack2中,使用两个“先进后出”栈实现一个先进先出的队列。总体的思路如下:

阅读全文 »

1.题目

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

2.思路分析

树是一种经典的数据结构,通常有以下三种遍历方式:

  • 1.前序遍历:a.先访问根节点,b.再访问左子节点,c.最后访问右子节点。
  • 2.中序遍历:a.先访问左子节点,b.再访问根节点,c.最后访问右子节点。
  • 3.后序遍历:a.先访问左子节点,b.再访问右子节点,c.最后访问根节点。
    一般二叉树的重建最少需要两种遍历方式,前序遍历和中序遍历,或者前序遍历和后序遍历。本题目中给出的条件是前序遍历和中序遍历结果,总体的算法步骤如下:
    阅读全文 »

1.题目

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

2.思路分析

    拿到链表之后想要反向输出,最容易想到的方法可能是将指针的指向变为反向,但这样会改变原本的链表结构。所以,通常情况下我们不希望改变原本的链表结构。换个角度思考,反向输出链表,那就是经典的“先进后出”数据结构,即借助栈(stack)这种数据结构完成链表的反转。总体的算法步骤如下:

阅读全文 »

参考资料:廖雪峰git教程)

1.git是什么?

Git是目前世界上最先进的分布式版本控制系统(没有之一)。那什么是版本控制系统?

如果你用Microsoft Word写过长篇大论,那你一定有这样的经历:
想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件“另存为……”一个新的Word文件,再接着改,改到一定程度,再“另存为……”一个新文件,这样一直改下去,最后你的Word文档变成了这样:

阅读全文 »

0.算法概述

0.1算法分类

十种常见的排序算法可以分为两大类:

  • 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。
  • 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。
    阅读全文 »

1.题目

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

2.思路分析

    拿到字符串之后,很容易想到有两种方式完成替换。第一种:从头到尾遍历,在原字符串的基础上进行替换。这种方式的缺点在于靠后的字符串会多次移动,因此对于含有O(n)个空格字符的字符串而言时间复杂度是O(n2)。第二种:创建一个新的字符串,并在其上进行替换。这种方式需要我们自己分配足够的内存空间。
    本文采用了一种使用从后向前遍历实现空格替换的方法,这种方法中所有的字符串只需要移动一次,因此这个算法的时间复杂度为O(n)。总体的算法步骤如下:

阅读全文 »

1.题目

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

2.思路

假设选定一个要查找的数字,如果在数组中任意选取一个数字来和该数字作比较,可能会导致下一次要查找的区域发生重叠。为了简化查找过程,我们可以选取每个查找区域右上角数据(左下角数据也可,原理相同)和要查找的数字进行比较。此时只会发生三种情况:

阅读全文 »

1.原理介绍

多终端管理的基本思路是将博客在Github网站上分为两个分支来管理:

  • 一个是master主分支用于存放博客的静态网站文件(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可谓是十分轻量的,学习成本也不需要太多,且一旦熟悉这种语法规则,会有一劳永逸的效果。

阅读全文 »