自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 顺时针打印矩阵

题目:给定一个MxN的矩阵,按顺时针的顺序打印数组,例如如下矩阵:1   2  34  5  67  8  9按顺时针打印则为:1 2 3 6 9 8 7 4 5解析:对于这个题目,我们可以按将矩阵由外及里进行分层,每一层均由一个矩形表示,这个矩形所经过的数字,则为该层的所有数字。如以上矩阵,共有两层,第一层的数字为:1 2 3 6 9 8 7 4;而第二层的数字则只包

2013-09-30 10:40:44 777

原创 字符串切割

题目:给定一个收尾相连的字符串s,该字符串中只包含b、r、w三个字符。现在选定一个点作为分割点,从这个分割点往左开始收集字符,直到遇到第一个与已收集的字符不同的字符为止,设收集到的字符个数为left个。同样,从分割点往右开始收集字符,直到遇到与已收集的字符不同的字符为止,设收集到的字符为right个。要求返回left+right值。其中字符w可以作为b或r的任一一个字符。例如:s =

2013-09-29 21:41:44 799

原创 贪吃蛇游戏

题目:        一条贪吃的蛇在一个n*m的网格中游走,它只能从一个方格走向另一个相邻的方格,这里相邻的意思是两个方格有公共边。每个方格可以看作是一个房间,其中一些是空的,一些存放有苹果。贪吃的蛇根本不进入空的房间,而进入有苹果的房间后就可以带走所有苹果使房间成为空的。蛇从一个指定的房间出发,最终回到它的家,把一路带来的苹果存储到家中,当然,它希望带来的苹果最多。请编写程序,输入有整数n和

2013-09-29 19:26:02 907

原创 hulu2014笔试题,求字符串切割代价

题目:给定长为n的字符串,以及一串切割的位置,由于每一次切割字符串都需要拷贝字符串,因此每次切割的时候的代价均为O(n)。其中n代表字符串的长度。例如给定一个长为10的字符串以及切割位置为2、4、7.则如果我们按顺序切割时,总的代价为10+8+6=24,即第一次切割2位置处,剩余长度为8的子串;第二次切割4位置处,剩余长度为6的子串;最后一次在位置7处切割。但是最优的切割顺序是:4、2、7,这

2013-09-27 18:01:09 1662

原创 hulu2014笔试题,求朋友数

题目大意:H学生有25个同班同学(除掉他自己),这25个同学每个人的朋友数均不相同,其中朋友关系是对称的,即A是B的朋友,则B也是A的朋友。问H有多少个朋友?解析:其实这里分为两种情况来求解。1.H的25个同学的朋友数为1,2,....,25个分别不等。对于这种情况,我们首先看有25个朋友的人,他必然和每一个班级上的同学都是朋友,包括H;假设这个人是A,则此时可以看出那个只有一

2013-09-27 08:59:38 1904

原创 北京hulu笔试,按Z字形打印矩阵

题目:给定一个矩阵,按Z字形的顺序输出整个矩阵。所谓Z字形即如下所示:按如上的Z字形顺序打印这个矩阵,将会得到:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16这个序列。解法一:对于这个顺序,我们可以利用两个标识位,leftdown和righup来分别表示当遍历到[i,j]时,下一个元素是在左下方还是右上方。这里有两种特殊情况,即当目前的遍历方向为右

2013-09-26 22:49:20 2505

原创 华为2014校园招聘笔试,围棋吃子判断

题目大意:一个围棋盘的位置总共有三种状态,分别为空、白棋、黑棋,分别用0、1、2来表示。每一个位置都有上下左右四个邻居,当其邻居中有一个空格,则说明这个位置的棋子有气。当然,气是可以传递的,即只要一颗棋子它周围有气,则所有与该棋子相连的相同颜色的棋子都有气。若一个棋子的气为0,则该棋子将被吃掉。在下一个棋子时,若该棋子导致对方的某些棋子的气为0,则该将对方这些气为0的棋子吃掉,它们对应位置则需

2013-09-25 22:00:01 3804

原创 Google 2014校园招聘9月23日笔试题:Sorting

题目描述:Alex and Bob are brothers and they both enjoy reading very much. They have widely different tastes on books so they keep their own books separately. However, their father thinks it is good to p

2013-09-24 16:29:06 1643

原创 Google 2014校园招聘9月23日笔试题:Rational number tree

题目:Rational Number TreeConfused? Read the quick-start guide.Small input9 points Solve B-smallYou may try multiple times, with penalties for wrong submissions.Large input12 points You m

2013-09-24 16:09:17 1645

原创 排序算法

1.快速排序/**两头往中间扫描的快速排序*/void qsort_1(int *A, int low, int high){ if(A == NULL || low >= high) return; int pivotKey = A[low]; int i = low, j = high; while(i < j) { while(i = pivotKey) j--

2013-09-23 21:04:36 905

原创 寻找缺失的那个数

题目:给定一个大小为n的数组A[0..n-1],数组中包含0..n中的n个数,其中有一个数丢失,没有在数组中。现在假设数组中的数据只有一个fetch(i)操作,用于获取树脂第i为的bit位。要求给定一个O(n)的算法,找出缺失的那个数。分析:对于这个题目,由于我们一次只能获取数值的一个位信息。所以我们无法利用常规的方法,比如将0+1+2+..+n的和值减去数组A中所有的元素的和,或是利

2013-09-21 10:57:03 985

原创 将一个整数的二进制表示的奇数位与偶数位交换位置

题目:如题,交换一个整数二进制表示中,奇数位相邻的偶数位交换。如n=10101010, 则交换后的值m = 01010101.解析:假设n=abcdefgh,则可以首先通过获取两个值m1和m2,其中m1 = a0c0e0g0, m2 = 0b0d0f0h,最后所求的值即为m = m1 | m2。要获取m1其实很简单,m1 = n & 0xaaaa;同理,获取m2 = n & 0x555

2013-09-18 09:25:22 1574

原创 将整数指定区间位设为指定值

题目:给定两个32为的整数N和M,并给定一个区间[i,j],其中0解析:这题考查的是对位操作的熟悉程度。对于这题,我们可以分三步走,第一步即将整数N的N[i, j]全部设为0;第二步,将M除了M[i, j]保持不变,其余位均设为0;第三步,用N=N | M即得到了最终的N值。利用这几步,便能够得到要求的结果,代码如下:#include using namespace st

2013-09-13 10:52:27 811

原创 求两个字符串的前后重叠的最长子串的长度

题目:给定两个字符串,求它们前后重叠的最长子串的长度,比如"abcde"和“cdefg”是"cde",长度为3。解析:假设两个字符串分别为P[0..n]和S[0..m],那么这个问题实际上是要求解的l1 = max{n-i+1 | P[i..n] = S[0..m-i]}以及l2 = max{m-i+1 | P[0..m-i] = S[i..m]}中更大的一个,即求解L=max{l1,

2013-09-11 09:58:45 5354

原创 求数组的最长严格递增子序列

题目:给定一个整数数组,求其最长递增子序列的长度。如对于数组[1, 0, 2, 3, 1],则其最长递增子序列有两个,分别为[0, 2, 3]和[1, 2, 3],这样对于这个数组的最长递增子序列的长度就为3。解析1:对于这一题,可以利用动态规划的思想来解决。对于数组A[0,..,n],我们用一个数组Len[1,..,n],Len[i]表示子数组A[0,..,i]中,以A[i]为尾的严

2013-09-10 11:27:29 1849

原创 排序堆栈

题目:给定一个堆栈,要求只用push,pop,peek以及isEmpty这四个成员函数对堆栈中的元素进行排序。解析:这个问题可以借助一个辅助栈来完成。排序的方法类似于插入排序,时间复杂度为O(n^2).具体细节可以参考代码。代码:public static Stack sort(Stack s) { Stack r = new Stack(); while(!s

2013-09-09 16:09:26 1764

原创 实现一个在O(1)内提供min操作的栈

题目:正如本文题目所示,要求实现一个除了push,pop之外,还提供一个在O(1)时间内给出堆栈内最小的数值的操作。解析1:对于这个问题,我们可以从堆栈节点保存的信息入手。通常堆栈的节点只保存一个数据对象,为了能够在O(1)的时间内找到堆栈内最小的值,我们可以在每个堆栈节点内保存一个min值,用于指示堆栈在该节点及其以下的所有节点中,最小的值。这样,当需要获取堆栈中目前的最小值的时候,

2013-09-09 15:46:16 866

原创 寻找带环的单链表的换的入口位置处的节点

题目:如本文题目,给定一个带环的单链表,给出一个算法求链表环的入口位置处的节点。解析:这题的解决步骤如下:1.设置一个快指针fast和一个慢指针slow,它们同时从链表头开始往后遍历,快指针每次移动两个位置,慢指针每次移动一个位置2.当快指针和慢指针相遇时,将慢指针重新指向链表头3.快指针和慢指针此时在同时移动,两个指针都一次移动一个位置,当两个指针再次相遇时,指针所指的节

2013-09-08 21:26:37 1157

原创 判断一个字符串是否为另一个字符串的旋转后的子字符串

题目:假定我们现在又一个函数isSubString(const string& str1, const string& str2)能够判断出字符串str2是否为str1的子串,那请给出一个方法能够快速的判断出一个字符串是否为另一个字符串任意旋转后的子串。此处所说的旋转指字符串的循环移位,例如字符串"ewintervi"为字符串"interview“旋转后的一个结果。解析:对于这个题目,

2013-09-08 11:23:54 1720

原创 原地旋转矩阵

题目:给定一个大小为N*N的矩阵A,如何在空间复杂度为O(1)的情况下,将矩阵顺时针旋转90度?解析:对于矩阵旋转,最容易想到的便是利用一个大小同样为N*N的临时矩阵T,将原矩阵A[i][j] 放在 T[j][n-i-1]位置处。最后将矩阵T的数据拷贝置矩阵A中,完成矩阵的旋转。但是这种方法的空间复杂度为O(N^2),不满足题目的O(1)的要求。其实仔细思考一下,我们可以知道矩阵A

2013-09-08 11:04:57 2609

原创 替换字符串中的空格

题目:用‘\20'替换字符串中的所有空格。源代码:void replaceWhiteSpace(char *str){ if(str == NULL) return; char* p = str; int count = 0; while(*p != '\0') { if(*p == ' ') count++; p++; }//while if(count

2013-09-07 21:15:42 608

转载 Visual Studio 2008 和 Windows 环境变量及如何在文件中引用环境变量

Visual Studio 2008  和 Windows 环境变量对设置 相对路径很重要,这样便于代码的移植,即使换一台计算机,代码不用更改配置,直接就能用。可以在项目的“工具”“属性页”对话框中任何接受字符串的位置使用这些宏。这些宏不区分大小写。 关于如何自己定义环境变量详见我的另一文章:http://blog.csdn.net/jtop0/article/details/757413

2013-09-07 10:24:13 1841

转载 7个例子科普CPU cache

CPU cache一直是理解计算机体系架构的重要知识点,也是并发编程设计中的技术难点,而且相关参考资料如同过江之鲫,浩瀚繁星,阅之如临深渊,味同嚼蜡,三言两语难以入门。正好网上有人推荐了微软大牛Igor Ostrovsky一篇博文《漫游处理器缓存效应》,文章不仅仅用7个最简单的源码示例就将CPU cache的原理娓娓道来,还附加图表量化分析做数学上的佐证,个人感觉这种案例教学的切入方式绝对是俺的菜

2013-09-03 17:08:55 919

原创 求数组逆序对数

题目:对于一个元素个数为n的数组A,若*A[i] > A[j],且0解析:对于这一个题目,最容易想到的方法即顺序扫描整个数组。没扫描到一个元素,则将该元素与其后面的所有元素进行比较,若后面的元素比该元素大,则找到一个逆序数。这一过程,对于数组中位置i处的元素需要与n - i - 1个元素进行比较。所以时间复杂度为O(n^2).当然对于这个题目可以利用分治法来求解。首先将数组一分

2013-09-03 16:56:47 2162

转载 海盗博弈论

海盗博弈论Charlesgao 2011-06-09 17:39海盗分金是一个非常古老的问题,在1999年《科学美国人》正式把它发表之前,已经至少流行10年了,相信很多人都有所耳闻,也知道解法。此前死理性派也对这个问题也有所 涉及 。今天我们就来回顾一下这个有意思的问题,并且在把问题推广到大规模海盗团伙后,会得出一些非常有意思的结论。 分

2013-09-03 13:05:01 1108

转载 让你立刻爱上数学的10个算术游戏

让你立刻爱上数学的10个算术游戏matrix67 2011-02-17 20:19死理性派的小编经常会被问到的一个问题:数学到底哪里有趣了,数学之美又在哪里?这篇文章精心选择了 10 个老少咸宜的算术问题,以定理、趣题甚至未解之谜等各种形式带领大家窥探数学世界的一角。不少问题背后都蕴含了深刻的数学知识,触及到数学的各个领域。希望从小数学就不及格的朋友们能够喜

2013-09-03 11:32:52 1602

转载 原地归并排序(In-place merge sort)

原文地址:http://www.cnblogs.com/daniagger/archive/2012/07/25/2608373.html     对于归并排序,我们首先想到的是它的时间复杂度为O(nlgn),空间复杂度为O(n).但事实上这O(n)的空间开销可以降至O(1),这一方法为原地归并排序.这一方法的思想如下:关键在于merge这个函数。两段递增的子数组arr[begin

2013-09-02 20:25:29 4214 1

原创 寻找三个有序数组的共同最小元素

题目:有3个数组x[]、y[]与z[],各有x、y与z个元素,而且三者都已经从小到大依序排 列。编写一个程序,找出值最小的共同元素(也就是同时在3个数组中出现,并且值最小的元素);但若没有共同元素,请显示合适的信息。解法:对于这个题目,最容易想到的方法即依次扫描数组x和数组y,每当x[i] == y[i]时,则在数组z中搜索x[i]是否同样存在于数组z中。假设数组x,y,z的长度分

2013-09-02 14:06:22 3005

转载 求两个已序数组的中位数

本文转自:http://dsqiu.iteye.com/blog/1715280题目:已知两个数组x[]与y[],各有n个元素,并且也已经以从小到大的顺序排好,编写一 个程序,用少于n次比较找出x[]与y[]合并后的中位数。说明:因为x[]与y[]都已经排好,而且各有n个元素,因此一般最自然的想法就是把x[]与 y[]做合并的工作,一直合并到得出第a个元素时,这就是中位数了

2013-09-02 09:33:26 722

转载 无限式查找

本文原文地址:http://dsqiu.iteye.com/blog/1715280题目:已知一个数组,元素个数有多少并不很清楚,但是数组元素已经依顺序从小到大排好, 而且在数组最后添加了足够多的记号;表示最大的值,比数组中每一个元素都大,而且个数足够多。编写一个程序,在这个数组中找出某个给定的值。说明:因为并不知道数组中有多少个元素,所以虽然数组中元素已经依顺序排列好

2013-09-02 09:23:36 723

模式识别与机器学习

机器学习与人工智能方向很经典的入门书籍,本书从最基本的开始,循序渐进的介绍了模式识别和机器学习的基础知识和一些经典算法

2011-12-11

计算理论导引

计算理论的经典教材,里面详细介绍了图灵机的基本概念,以及有关算法复杂度的概念

2011-12-11

新编c语言大全(适合初学者)

一本c语言教程,适合初学者。如果你想学习c语言,这是一本不错的电子书,希望能给您带来帮助

2011-03-12

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除