面试
huzhigenlaohu
这个作者很懒,什么都没留下…
展开
-
Sunday算法详解
一:背景Sunday算法是Daniel M.Sunday于1990年提出的字符串模式匹配。其效率在匹配随机的字符串时比其他匹配算法还要更快。Sunday算法的实现可比KMP,BM的实现容易太多。二:分析假设我们有如下字符串:A = "LESSONS TEARNED IN SOFTWARE TE";B = "SOFTWARE";Sund转载 2016-08-15 20:39:45 · 1015 阅读 · 0 评论 -
网易笔试题--混合颜色(异或)
你就是一个画家!你现在想绘制一幅画,但是你现在没有足够颜色的颜料。为了让问题简单,我们用正整数表示不同颜色的颜料。你知道这幅画需要的n种颜色的颜料,你现在可以去商店购买一些颜料,但是商店不能保证能供应所有颜色的颜料,所以你需要自己混合一些颜料。混合两种不一样的颜色A和颜色B颜料可以产生(A XOR B)这种颜色的颜料(新产生的颜料也可以用作继续混合产生新的颜色,XOR表示异或操作)。本着勤俭节原创 2016-08-20 23:23:17 · 2602 阅读 · 0 评论 -
回溯法求解N皇后问题
回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并以此慢慢地扩大问题规模,迭代地逼近最终问题的解。这种迭代类似于穷举并且是试探性的,因为当转载 2016-08-12 10:13:15 · 873 阅读 · 0 评论 -
回溯法求迷宫问题
并不是什么新鲜算法,只是这儿当作回溯法经典案例复习下而已!以一个M×N的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。(1) 根据二维数组,输出迷宫的图形。(2) 探索迷宫的四个方向:RIGHT为向右,DOWN向下,LEFT向左,UP向上,输出从入口到出口的行走路径。[测试数据转载 2016-08-12 10:52:37 · 1151 阅读 · 0 评论 -
根据入栈顺序判断出栈序列正确与否
题目描述: 题目标题:铁路栈问题铁路的调度站如下:火车编号为:1~9,且不重复。如:编号分别为“1”、“2”、“3”、“4”、“5”的5个火车顺序进站,那么进站序列为“12345”,全部进站后再顺序出站,则出站序列为“54321”,如果先进1,2,然后2出站,然后1出站,然后再3进站、出站,4进站、出站,5进站、出站,那么出站序列就为21345.详细原创 2016-08-12 15:51:10 · 2260 阅读 · 0 评论 -
和尚挑水(回溯法)
复习回溯法题目某寺庙里7个和尚:轮流挑水,为了和其他任务不能冲突,各人将有空天数列出如下表:和尚1: 星期二,四;和尚2: 星期一,六;和尚3: 星期三,日;和尚4: 星期五;和尚5: 星期一,四,六;和尚6: 星期二,五;和尚7: 星期三,六,日;请将所有合理的挑水时间安排表 思路 回朔法求解回朔法即每进行一步,都试图在当前部分解的基础上扩大转载 2016-08-13 10:01:19 · 935 阅读 · 0 评论 -
整数划分总结(动态规划)
先引入一个比较实际的问题:分苹果题目M个相同苹果放到N个相同篮子里有多少种放法,允许有篮子不放。1<=M<=10,1<=N<=10例如5个苹果三个篮子,3,1,1 和 1,1,3是同一种放法输入 7 3输出 8思路设f(m,n) 为m个苹果,n个盘子的放法数目:当n>m:必定有n-m个盘子永远空着,去掉它们对摆放苹果方法数目不产生原创 2016-08-13 11:23:52 · 4856 阅读 · 0 评论 -
JDK里的设计模式(全)
下面是JDK中有关23个经典设计模式的示例,在stakeoverflow也有相应的讨论:http://stackoverflow.com/questions/1673841/examples-of-gof-design-patternsStructural(结构模式)Adapter:把一个接口或是类变成另外一种。java.util.Arrays#asList() jav转载 2016-08-14 13:07:28 · 712 阅读 · 0 评论 -
TCP之拥塞处理详解
什么是拥塞控制 网络拥塞现象是指到达通信网络中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿,即出现死锁现象。拥塞控制是处理网络拥塞现象的一种机制。 拥塞控制是一种用来调整传输控制协议(TCP)连接上单次发送的分组数量的算法,通过增减单次发送量逐步调整,使之逼近当前网络的承载量。如果单次发送转载 2016-08-15 09:55:54 · 5393 阅读 · 0 评论 -
【分治法】最接近点对问题
问题场景:在应用中,常用诸如点、圆等简单的几何对象代表现实世界中的实体。在涉及这些几何对象的问题中,常需要了解其邻域中其他几何对象的信息。例如,在空中交通控制问题中,若将飞机作为空间中移动的一个点来看待,则具有最大碰撞危险的2架飞机,就是这个空间中最接近的一对点。这类问题是计算几何学中研究的基本问题之一。 问题描述:给定平面上n个点,找其中的一对点,使得在n个点的所有点对中,该点转载 2016-10-22 19:21:29 · 2792 阅读 · 1 评论 -
网易笔试题--幸运袋子(数列各项和大于数列各项乘积)
一个袋子里面有n个球,每个球上面都有一个号码(拥有相同号码的球是无区别的)。如果一个袋子是幸运的当且仅当所有球的号码的和大于所有球的号码的积。例如:如果袋子里面的球的号码是{1, 1, 2, 3},这个袋子就是幸运的,因为1 + 1 + 2 + 3 > 1 * 1 * 2 * 3你可以适当从袋子里移除一些球(可以移除0个,但是别移除完),要使移除后的袋子是幸运的。现在让你编程计算一下你可以原创 2016-08-20 22:23:13 · 2273 阅读 · 3 评论 -
google笔试题 -- 根据已知数列得到不能组合求和的最小数
开始是Google笔试题 https://code.google.com/codejam/contest/4244486/dashboard#s=a&a=2 (翻墙看)网易笔试也出现了,如下:小易邀请你玩一个数字游戏,小易给你一系列的整数。你们俩使用这些整数玩游戏。每次小易会任意说一个数字出来,然后你需要从这一系列数字中选取一部分出来让它们的和等于小易所说的数字。 例如: 如果{2,1,2原创 2016-08-18 21:31:11 · 1069 阅读 · 0 评论 -
Redis的持久化方式
Redis的持久化Redis有两种持久化的方式:快照(RDB文件)和追加式文件(AOF文件):RDB持久化方式会在一个特定的间隔保存那个时间点的一个数据快照。AOF持久化方式则会记录每一个服务器收到的写操作。在服务启动时,这些记录的操作会逐条执行从而重建出原来的数据。写操作命令记录的格式跟Redis协议一致,以追加的方式进行保存。Redis的持久化是可以禁用的,就是说你可以让数据的转载 2016-08-29 15:19:55 · 636 阅读 · 0 评论 -
字符串匹配的Boyer-Moore算法
介绍了KMP算法。但是,它并不是效率最高的算法,实际采用并不多。各种文本编辑器的"查找"功能(Ctrl+F),大多采用Boyer-Moore算法。Boyer-Moore算法不仅效率高,而且构思巧妙,容易理解。1977年,德克萨斯大学的Robert S. Boyer教授和J Strother Moore教授发明了这种算法。下面,我根据Moore教授自己的例子来解释这种转载 2016-08-15 21:13:20 · 341 阅读 · 0 评论 -
判断线段相交
在讲解之前,先认识下“向量叉积”的概念:如图,对于给定的向量AB与向量AC,我们如何判断AB是在AC顺时针方向还是逆时针方向呢?(如图所示,AB在AC逆时针方向,同时,AC在AB的顺时针方向)假设向量AB坐标为(x1,y1),向量AC坐标为(x2,y2),则规定“向量叉积”为:x1 * y2 - y1 * x2 “向量叉积”的意义是:转载 2016-08-15 21:24:39 · 715 阅读 · 0 评论 -
凸包问题
首先介绍下什么是凸包问题?如下图:在一个二维坐标系,有若干点杂乱排列着,将最外层的点连接起来构成的凸多边型,它能包含给定的所有的点,这个多边形就是凸包。寻找凸包的算法有很多种,Graham Scan算法是一种十分简单高效的二维凸包算法,能够在O(nlogn)的时间内找到凸包。在讲解之前,读者需要了解向量叉积正负的几何意义,如不了解,可以参考htt转载 2016-08-15 21:49:10 · 3203 阅读 · 0 评论 -
三种线性排序算法 计数排序、桶排序与基数排序
[非基于比较的排序]在计算机科学中,排序是一门基础的算法技术,许多算法都要以此作为基础,不同的排序算法有着不同的时间开销和空间开销。排序算法有非常多种,如我们最常用的快速排序和堆排序等算法,这些算法需要对序列中的数据进行比较,因为被称为基于比较的排序。基于比较的排序算法是不能突破O(NlogN)的。简单证明如下:N个数有N!个可能的排列情况,也就是说基于比较的排序算法的判定转载 2016-07-31 22:37:02 · 329 阅读 · 0 评论 -
Permutations 全排列生成算法
1、使用递归生成算法/* * 递归输出序列的全排列 */void permutation(char* array, size_t array_size, unsigned int index){ if(index >= array_size) { for(unsigned int i = 0; i < array_size; ++i) { cout << array[原创 2016-08-04 19:10:36 · 952 阅读 · 0 评论 -
理解 Linux 的硬链接与软链接
Linux 的文件与目录现代操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程创建信息的逻辑单元可被多个进程并发使用。在 UNIX 系统中,操作系统为磁盘上的文本与图像、鼠标与键盘等输入设备及网络交互等 I/O 操作设计了一组通用 API,使他们被处理时均可统一使用字节流方式。换言之,UNIX 系统中除进程之外的一切皆是文件,而 Linux 保持了这一特性。为了便于文件的转载 2016-08-28 11:22:33 · 641 阅读 · 0 评论 -
Largest Rectangle in Histogram(在柱形图中画出最大矩形)
Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the histogram.Above is a histogram where width转载 2016-08-18 11:20:26 · 675 阅读 · 0 评论 -
Spring Assert(方法入参检测工具类-断言)
Web 应用在接受表单提交的数据后都需要对其进行合法性检查,如果表单数据不合法,请求将被驳回。类似的,当我们在编写类的方法时,也常常需要对方法入参进行合 法性检查,如果入参不符合要求,方法将通过抛出异常的方式拒绝后续处理。举一个例子:有一个根据文件名获取输入流的方法:InputStream getData(String file),为了使方法能够成功执行,必须保证 file 入参不能为 null转载 2016-08-28 20:11:14 · 1396 阅读 · 0 评论 -
LeetCode OJ 之 Maximal Rectangle (最大的矩形)
题目:Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing all ones and return its area.给一个二维的二进制矩阵,只包含0和1,找出只包含1的最大矩形并且返回这个矩形的面积。思路:本题通过下图变换可以转换为求 :Lee转载 2016-08-18 15:34:25 · 2106 阅读 · 1 评论 -
[Leetcode] Maximal Square 最大正方形
题目:Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and return its area.For example, given the following matrix:1 0 1 0 01 0 1 1 11 1 1 1 1转载 2016-08-18 16:00:14 · 1056 阅读 · 0 评论 -
根据前序遍历和中序遍历结果重建二叉树(递归方法)
假设已经有了前序遍历和中序遍历的结果,如何重建这棵树呢?给定函数定义如下:void Rebuild(char* pPreOrder, //前序遍历结果 char* pInOrder, //中序遍历结果 int nTreeLen, //树的长度 NODE** pRoot) //返回NODE**类型原创 2016-10-24 22:08:58 · 1595 阅读 · 1 评论