- 博客(93)
- 资源 (2)
- 收藏
- 关注
原创 旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.
2014-10-05 20:01:22 459
原创 使用两个队列实现一个栈
解法:有两个队列q1和q2,先往q1内插入a,b,c,这做的都是栈的push操作。现在要做pop操作,即要得到c,这时可以将q1中的a,b两个元素全部dequeue并存入q2中,这时q2中元素为a,b,对q1再做一次dequeue操作即可得到c。如果继续做push操作,比如插入d,f,则把d,f插入到q2中,此时若要做pop操作,则做步骤2以此类推,就实现了用两个队列来实现一个栈的目的。
2014-10-05 19:20:11 497 1
原创 用两个栈实现队列
题目:用两个栈实现一个队列。队列的生命如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。template class CQueue{public: CQueue(void); ~CQueue(void); void appendtail(const T& node); T deleteH
2014-10-05 19:07:59 334
原创 从尾到头打印链表
题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值思路:1,栈,根据面试官需要是否要改变链表结构2,递归,原理用到栈3,可以改变链表结构,就把链头变链尾,改变指针方向
2014-10-03 16:26:53 342
原创 替换空格
请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。
2014-10-03 15:28:54 325
原创 二维数组中查找
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
2014-10-03 10:58:25 303
原创 输入两个整数n和m, 从数列1,2,...,n中任意选择几个数,使其和等于m, 要求编写程序输出所有的组合
01背包问题#include#includeint length;void PrintSolutions(int *flag){ for (int i=1; i<=length; i++) { if (flag[i] == 1) { cout << i << " "; } }
2014-09-20 19:06:07 594
原创 小米校园招聘笔试题寻找相似的帖子
寻找标题相同或者关键字一样的帖子,按组输出帖子的id,我们可以先用两个for循环将所有相似的帖子放到二维数组里面,arr[][],例如arr[i][j]表示id是i的帖子和j的帖子相似,然后就开始遍历这二维数组按照要求输出id组首先建表示帖子的类
2014-09-19 12:37:05 414
转载 主定理
假设有递推关系式其中,n为问题规模,a为递推的子问题数量,n/b为每个子问题的规模(假设每个子问题的规模基本一样),f(n)为递推以外进行的计算工作。情形一如果存在常数,有 那么情形二如果存在常数k ≥ 0,有 那么情形三如果存在常数,有
2014-09-11 10:28:53 438
转载 C/C++位运算技巧
预备知识对于位运算,大家都很熟悉,基本的位操作有与、或、非、异或等等。在面试中经常会出现位运算相关的题,所以我就做了简单的整理,参考了很多写的很好的博客及书籍。现在简单说一下,移位运算。左移运算:x 右移运算:x >> y。将x右移y位,这需要区分x是有符号数还是无符号数。在x是无符号数时,只需将x的最右边的y位丢弃,在左边补上y个0。在x是有符号数时,又分为x是正数还是负数。正数
2014-08-30 15:33:29 399
转载 两分钟彻底让你明白Android Activity生命周期
大家好,今天给大家详解一下Android中Activity的生命周期,我在前面也曾经讲过这方面的内容,但是像网上大多数文章一样,基本都是翻译Android API,过于笼统,相信大家看了,会有一点点的帮助 ,但是还不能完全吃透,所以我今天特意在重新总结一下.首先看一下Android api中所提供的Activity生命周期图(不明白的,可以看完整篇文章,在回头看一下这个图,你会明白的):
2014-08-21 11:03:21 314
原创 代理模式
代理模式代理模式(Proxy Pattern)是一个使用率非常高的模式,其定义如下: 为其他对象提供一种代理以控制对这个对象的访问。 代理模式的通用类图如图
2014-07-28 16:22:34 331
原创 建造者模式
建造者模式建造者模式(Builder Pattern)也叫做生成器模式,其定义如下: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式的通用类图如图
2014-07-27 21:26:52 392
原创 如何求根号2的值,并且按照需要列出指定小数位
如何求根号2的值,并且按照我的需要列出指定小数位,比如根号2是1.141 我要列出1位小数就是1.1 2位就是1.14, 1000位就是1.141...... 等
2014-07-24 15:36:15 2511 1
原创 单例模式
单例模式单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
2014-07-21 20:50:07 310
原创 接口隔离原则
接口隔离原则使用多个专门的接口比使用单一的总接口要好。一个类对另外一个类的依赖性应当是建立在最小的接口上的。一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。“不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。”这个说得很明白了,再通俗点说,不要强迫客户使用它们不用的方法,如果强
2014-07-21 12:41:37 614
原创 依赖倒置原则
所谓依赖倒置原则(Dependence Inversion Principle)就是要依赖于抽象,不要依赖于具体。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。
2014-07-21 10:26:57 418
原创 里氏替换原则
里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类
2014-07-20 21:26:46 343
原创 单一职责原则
单一职责原则一个类,只有一个引起它变化的原因。应该只有一个职责。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。这会导致脆弱的设计。当一个职责发生变化时,可能会影响其它的职责。另外,多个职责耦合在一起,会影响复用性。例如:要实现逻辑和界面的分离。
2014-07-20 20:54:41 357
原创 把一个单词增删改一个字符变为另外一个单词的最小操作次数
¡把一个单词增删改一个字符变为另外一个单词的最少操作次数。一次操作包含增加、减少、修改一个字符。¡举例:abcde变为acfgh 最短编辑距离为4。
2014-07-19 15:00:56 2806
原创 执行任务处理(有一台机器,上面有m个储存空间。然后有n个请求,第i个请求计算时需要占 R[i]个空间,储存计算结果则需要占据O[i]个空间)
有一台机器,上面有m个储存空间。然后有n个请求,第i个请求计算时需要占 R[i]个空间,储存计算结果则需要占据O[i]个空间(据O[i]个空间(其中O[i]14-6。
2014-07-18 15:32:43 2107
原创 在一个整形数组中去掉重复的数字
请把一个整形数组中重复的数字去掉。例如: 1, 2, 0, 2, -1, 999, 3, 999, 88 答案应该是: 1, 2, 0, -1, 999, 3, 88
2014-07-18 10:35:08 861
原创 写一个函数查找每个字符的个数,区分大小写,时间复杂度要求O(n)
char *str="AbcABca";写出一个函数,查找出每个字符的个数,区分
2014-07-17 21:00:50 659
原创 N个鸡蛋放进M个篮子问题
有N个鸡蛋和M个篮子,把鸡蛋放到M个篮子里,每个篮子都不能为空。另外,需要满足:任意一个小于N的正整数,都能由某几个篮子内蛋的数量相加的和得到。写出程序,使得输入一个(N,M),输出所有可能的分配情况。
2014-07-17 20:35:46 1469
转载 排序N个比N^7小的数,要求的算法是O(n)
算法思路:采用基数排序,用10个桶(vector),每一个桶用队列表示(queue),分别代表0-9,然后依次从低位到高位开始将要排序的数倒入桶中,然后再顺序取出来,直到排序完成。若有5个数,12,4,5,130,28第一次(个位):0: 13012: 1234: 45: 5678 :289然后顺序取出来,130, 12, 4
2014-07-16 12:08:56 537
转载 字符串通配符匹配问题
题目:在一篇英文文章中查找指定的人名,人名使用二十六个英文字母(可以是大写或小写)、空格以及两个通配符组成(*、?),通配符“*”表示零个或多个任意字母,通配符“?”表示一个任意字母。如:“J* Smi??” 可以匹配“John Smith” .请用C语言实现如下函数:void scan(const char* pszText, const char* pszName);注:psz
2014-07-15 16:13:00 493
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人