08 2018 档案

摘要:题目描述 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+ 阅读全文
posted @ 2018-08-31 01:20 汕大小吴 阅读(1184) 评论(0) 推荐(0) 编辑
摘要:题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵 阅读全文
posted @ 2018-08-30 18:49 汕大小吴 阅读(977) 评论(0) 推荐(1) 编辑
摘要:题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{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] 阅读全文
posted @ 2018-08-30 18:23 汕大小吴 阅读(730) 评论(0) 推荐(0) 编辑
摘要:题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 题目分 阅读全文
posted @ 2018-08-30 16:34 汕大小吴 阅读(719) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。 题目分析 首先,我们可以先画图。画完图后我们要想办法从中找出第K小的节点。 因为这是二叉搜索树,我们可以轻易发现它的中序遍历序列就是从小到大排列,也就是我们可以 阅读全文
posted @ 2018-08-30 01:11 汕大小吴 阅读(1114) 评论(0) 推荐(0) 编辑
摘要:题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 题目分析 首先拿到题目时候,我先想到的是什么是序列化二叉树?序列化主要就是在前后端交互时候需要转换下,毕竟网络传输的是流式数据(二进制或者文本),而不是对象。 所以序列化二叉树就是转化成字符串。 之前解决重建二叉树问题时候,我们可以知道,两个 阅读全文
posted @ 2018-08-29 14:06 汕大小吴 阅读(858) 评论(0) 推荐(0) 编辑
摘要:题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 题目分析 从上到下打印二叉树我们知道用队列可以实现,但是如果多行打印怎么做呢? 我们需要分割,在行与行之间进行分割。如何分割呢?肯定要知道个数才能分割。 可是我又如何知道这一行有多少个呢? 这就是重点了,我们可以通过遍历上一 阅读全文
posted @ 2018-08-25 21:21 汕大小吴 阅读(777) 评论(0) 推荐(0) 编辑
摘要:题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 题目分析 这道题还是需要画图分析,不然不好找规律。 正常的广度遍历的话,都是同样的顺序,从左到右,而我们要在广度遍历的基础上改造为之字形遍历。 阅读全文
posted @ 2018-08-24 19:58 汕大小吴 阅读(802) 评论(0) 推荐(0) 编辑
摘要:题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 题目分析 主要是要懂得如何去判断对称,比如描述一颗树我们可以通过两个序列就能得到这棵树的性质。因此我们可以这样想 对称就是左边和右边对称,那么我可以通过描述一种新的遍历序列,比如 阅读全文
posted @ 2018-08-23 22:54 汕大小吴 阅读(790) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 题目分析 这题一定要画图,因为只有画图我们才能分清楚下一个节点有哪些情况 1.如果一个节点有右子树,那么它的下一个节点就是它的右子树中的最左子节点。也就是 阅读全文
posted @ 2018-08-23 22:17 汕大小吴 阅读(657) 评论(0) 推荐(0) 编辑
摘要:一直忘记更新了,把剑指offer更新完吧。。。。 题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 题目分析 这道链表的题目不难,意思也很容易清楚,就是删除相邻的重复 阅读全文
posted @ 2018-08-23 20:40 汕大小吴 阅读(893) 评论(1) 推荐(0) 编辑
摘要:堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点 阅读全文
posted @ 2018-08-20 15:23 汕大小吴 阅读(419) 评论(0) 推荐(0) 编辑
摘要:github: https://github.com/14glwu/FEInterviewBox/tree/master/JS%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F JavaScript 中常见设计模式 单例模式 策略模式 代理模式 迭代器模式 发布订阅模式 命令模 阅读全文
posted @ 2018-08-17 00:53 汕大小吴 阅读(1820) 评论(0) 推荐(2) 编辑
摘要:什么是适配器模式? 定义:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。 何时使用: 1、系统需要使用现有的类,而此类的 阅读全文
posted @ 2018-08-17 00:43 汕大小吴 阅读(868) 评论(0) 推荐(0) 编辑
摘要:什么是状态模式? 定义:将事物内部的每个状态分别封装成类,内部状态改变会产生不同行为。 主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。 何时使用:代码中包含大量与对象状态有关的条件语句。 如何解决:将各种具体的状态类抽象出来。 应用实例: 1、打篮球的时候运 阅读全文
posted @ 2018-08-17 00:06 汕大小吴 阅读(516) 评论(0) 推荐(0) 编辑
摘要:什么是装饰者模式? 定义:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。 主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。 何时使用:在不想增加很多子类的情况下扩展类。 如何解决:将具体功 阅读全文
posted @ 2018-08-16 20:15 汕大小吴 阅读(1680) 评论(0) 推荐(1) 编辑
摘要:什么是中介者模式? 中介者模式:对象和对象之间借助第三方中介者进行通信。 定义:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对 阅读全文
posted @ 2018-08-16 20:00 汕大小吴 阅读(862) 评论(0) 推荐(0) 编辑
摘要:什么是职责链模式? 重要性:4 星,在项目中能对 if-else 语句进行优化 定义:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。 主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须 阅读全文
posted @ 2018-08-16 19:39 汕大小吴 阅读(1110) 评论(1) 推荐(0) 编辑
摘要:什么是享元模式? 定义:享元模式是一种优化程序性能的模式,本质为减少对象创建的个数。 主要解决:在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。 何时使用: 1、系统中有大量对象。 2、这些对象消耗大量内存。 3、这 阅读全文
posted @ 2018-08-16 19:12 汕大小吴 阅读(912) 评论(0) 推荐(0) 编辑
摘要:什么是模板方法模式? 定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 主要解决:一些方法通用,却在每一个子类都重新写了这一方法。 何时使用:有一些通用的方法。 如何解决:将这些通用算法抽象出来。 应用实例: 1、在 阅读全文
posted @ 2018-08-16 14:31 汕大小吴 阅读(1075) 评论(0) 推荐(1) 编辑
摘要:什么是组合模式? 定义:1.将对象组合成树形结构以表示"部分-整体"的层次结构。2.组合模式使得用户对单个对象和组合对象的使用具有一致性。3.无须关心对象有多少层,调用时只需在根部进行调用; 主要解决:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂 阅读全文
posted @ 2018-08-16 11:47 汕大小吴 阅读(732) 评论(0) 推荐(0) 编辑
摘要:什么是命令模式? 定义:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。 主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。 何时使用:在某些场合,比如要对 阅读全文
posted @ 2018-08-16 11:25 汕大小吴 阅读(549) 评论(0) 推荐(0) 编辑
摘要:什么是发布订阅模式(观察者模式)? 定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。 何时使用:一个对象(目标对象)的状态发生改变,所有的依赖对象 阅读全文
posted @ 2018-08-16 02:07 汕大小吴 阅读(656) 评论(0) 推荐(0) 编辑
摘要:什么是迭代器模式? 定义:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。 主要解决:不同的方式来遍历整个整合对象。 何时使用:遍历一个聚合对象。 如何解决:把在元素之间游走的责任交给迭代器,而不是聚合对象。 关键代码:定义接口:done, next。 优点: 1、它支持 阅读全文
posted @ 2018-08-16 01:41 汕大小吴 阅读(555) 评论(0) 推荐(0) 编辑
摘要:什么是代理模式? 情景:小明追女生 A 非代理模式:小明 =花=> 女生A 代理模式:小明 =花=> 让女生A的好友B帮忙 =花=> 女生A 定义:为其他对象提供一种代理以控制对这个对象的访问。 主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于 阅读全文
posted @ 2018-08-16 00:11 汕大小吴 阅读(535) 评论(0) 推荐(0) 编辑
摘要:什么是策略模式? 定义:根据不同参数可以命中不同的策略 主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。 何时使用:有许多种情况,而区分它们的只是他们直接的行为。 如何解决:通过一个hash对象,来映射不同的策略。 优点: 1、算法可以自由切换。 2、避免使用多 阅读全文
posted @ 2018-08-15 22:15 汕大小吴 阅读(561) 评论(0) 推荐(0) 编辑
摘要:什么是单例模式 定义:1.只有一个实例。2.可以全局访问 主要解决:一个全局使用的类频繁地创建与销毁。 何时使用:当您想控制实例数目,节省系统资源的时候。 如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。 优点: 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁 阅读全文
posted @ 2018-08-15 21:16 汕大小吴 阅读(1077) 评论(0) 推荐(1) 编辑
摘要:在我看来理解好JS引擎的执行机制对于理解JS引擎至关重要,今天将要好好梳理下JS引擎的执行机制。 首先解释下题目中的名词:(阅读本文后你会对这些概念掌握了解) Event Loop:事件循环Micro Task:微任务Macro Task:宏任务 阅读本文前,我们要知道两个重点。 (1) JS是单线 阅读全文
posted @ 2018-08-13 14:01 汕大小吴 阅读(1430) 评论(0) 推荐(0) 编辑
摘要:对数器的概念和使用 对数器一般用于验证你写的算法是否正确,因为自己写的测试用例可能写的考虑不够全面。 0.有一个你想测试的方法a 1.实现一个绝对正确但是时间复杂度不好的方法b 2.实现一个随机样本产生器 3.实现比对的方法 4.把方法a和方法b比对很多次来验证方法a是否正确 5.如果有一个样本比对 阅读全文
posted @ 2018-08-07 18:29 汕大小吴 阅读(922) 评论(0) 推荐(0) 编辑
摘要:晒下我的比较浅显的深拷贝,没有考虑原型和循环引用,可以拷贝一些js原生类型,用于面试用。 阅读全文
posted @ 2018-08-07 13:14 汕大小吴 阅读(749) 评论(0) 推荐(0) 编辑
摘要:简单复习下node,不过很多重要的知识点是图,文字无法展示出来。 1.Node的特点 异步I/O 事件与回调函数 单线程 跨平台(libuv) 2.Node的应用场景 I/O密集型(事件循环、异步I/O) CPU密集型(可以采用子进程) 3.CommonJS的模块规范 模块引用 模块定义 模块标识 阅读全文
posted @ 2018-08-05 22:57 汕大小吴 阅读(409) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示