剑指Offer-69-树中两个节点的最低公共祖先 项目地址:https://github.com/SpecialYy/Sword-Means-Offer问题输入两个树的节点,求他们的公共的最低祖先节点。解析其实此类题目,如果不考虑各种优化的情况下,采用最普通的深度优先搜索,从跟节点记录到指定的节点的路径。这样我们遍历2次树后,就可以得到2条路径,求这两条路径最后一个相同的节点就是他们最低的公共祖先节点。上图中,4和6的最低公共祖先就是...
剑指Offer-68-机器人的运动范围 项目地址:https://github.com/SpecialYy/Sword-Means-Offer问题地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+...
剑指Offer-68-机器人的运动范围 项目地址:https://github.com/SpecialYy/Sword-Means-Offer问题地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+...
剑指Offer-67-矩阵中的路径 项目地址:https://github.com/SpecialYy/Sword-Means-Offer问题请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这...
剑指Offer-66-滑动窗口的最大值 项目地址:https://github.com/SpecialYy/Sword-Means-Offer问题项目地址:https://github.com/SpecialYy/Sword-Means-Offer问题项目地址:https://github.com/SpecialYy/Sword-Means-Offer问题给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如...
剑指Offer-65-数据流中的中位数 项目地址:https://github.com/SpecialYy/Sword-Means-Offer问题如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。解析...
浅谈RESTful架构风格 RESTfulREST (representation state transfer)表述性状态转移。该架构主张服务端维护资源状态,客户端维护会话状态,消除服务端维护客户请求状态的开销,有利于服务器横向扩展和负载均衡。REST使服务器处于无状态,及服务器仅仅管理资源的状态,会话的状态的需要客户端自己来维持。举个例子,比如我调用远程服务next操作(功能:当前书籍的下一章),这时服务器端必须存有...
剑指Offer-64-二叉搜索树的第k个节点 项目地址:https://github.com/SpecialYy/Sword-Means-Offer问题给定一棵二叉搜索树,请找出其中的第k小的结点。解析二叉搜索树是这样定义的:它允许是棵空树;根节点的值小于其所有左子树中的节点,根节点的值大于其所有右子树中的节点。其左右子树的所有节点也满足此约束。比如下图就是一个二叉树搜索树:很明显上图满足二叉搜索树的定义,我们可以发现对于任意一棵...
剑指Offer-63-序列化二叉树 项目地址:https://github.com/SpecialYy/Sword-Means-Offer问题请实现两个函数,分别用来序列化和反序列化二叉树。解析首先要了解什么是序列化。序列化指的是将对象转换成字节码形式或其他文本格式以方便我们进行持久化或网络传输。反序列化就是根据转换后的格式恢复成原始对象模型。理解了以上的定义,再来看题目的意思,目的就是希望能够对一个二叉树生成某种...
Mac下unzip解压文件名乱码问题 前言zip为windows平台常用压缩文件格式,在团队协作中,经常会碰到同事发过来的zip格式压缩文件。我们在mac一般利用unzip来解压,在文件名全是英文的情况可以很好的解决问题,但是如果文件名包含中文,则会出现乱码问题,本文旨在提供一个最简单的方式解决该问题。方案为什么unzip不能handle这种情况?unzip有很多的版本,而适合用在MAC OS上的版本很多不支持指定编码格式。这...
剑指Offer-62-把二叉树打印成多行 项目地址:https://github.com/SpecialYy/Sword-Means-Offer问题从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。解析这道题看似考察是层次遍历,其实不然,该题添加了按行打印的需求。其实这道题与这一题非常类似,我也在那一题中给出本题的解题思路。换句话说,上一题应该算是这一题的变形和拓展。这里,首先阐明一下层次遍历的思路:层级遍历:...
剑指Offer-61-按之字形顺序打印二叉树 项目地址:https://github.com/SpecialYy/Sword-Means-Offer问题请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。解析首先我们要知道如何层级遍历且按行输出,知道这个原理后,再处理之字形就简单多了。层级遍历:依次打印二叉树每一层的节点。先打印根节点,然后...
剑指Offer-60-对称的二叉树 项目地址:https://github.com/SpecialYy/Sword-Means-Offer问题请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。解析首先要理解对称二叉树是个什么样子的,如下图就是一个简单的对称的二叉树。通过上图,我们很容易可以发现对称二叉树的特性:对原二叉树进行翻转,得到新的二叉树在值表现形式是...
剑指Offer-59-二叉树的下一个节点 项目地址:https://github.com/SpecialYy/Sword-Means-Offer问题给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解析这道题考察对二叉树和其遍历方式的理解。中序遍历为“左-根-右”的形式进行访问,所以这道题最笨的方法就是获得中序遍历序列,从而轻松即可获得给定节点的下...
剑指Offer-58-删除链表中重复的节点 项目地址:https://github.com/SpecialYy/Sword-Means-Offer题目在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5对应为书本的p122解析预备知识链表删除问
mac环境变量 查看环境变量envenv为environment的缩写,列出所有的环境变量。setset查看所有的变量(包含环境变量和自定义变量),其中自定义变量主要为一些与bash接口有空的变量以及用户自定义的变量。其中重要的几个如下:PS1='\h:\W \u\$ ' # 命令提示符号\h: 主机名在第一个小数点之前的名字\W: 利用basename函数获取的工作目录名称\u: 目前用户的账...
剑指Offer-57-链表中环的入口节点 项目地址:https://github.com/SpecialYy/Sword-Means-Offer题目给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。解析预备知识此处指的是单链表存在的环的情况,以下图为似: 我们目标就是要找环的入口点,也就是说从链表首部出发,首次切入环的点,比如上图中3就是就是环入口。 所以我们需要解决的问题有...
剑指Offer-56-字符流中第一个不重复的字符 项目地址:https://github.com/SpecialYy/Sword-Means-Offer题目请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是”g”。当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是”l”。 输出描述: 如果当前字符流没有存在出现一次的字符,返回#字...
剑指Offer-55-表示数值的字符串 项目地址:https://github.com/SpecialYy/Sword-Means-Offer题目请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。解析预备知识在...