摘要: 题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。分析:这是一道很基本的考查位运算的面试题。包括微软在内的很多公司都曾采用过这道题。一个很基本的想法是,我们先判断整数的最右边一位是不是1。接着把整数右移一位,原来处于右边第二位的数字现在被移到第一位了,再判断是不是1。这样每次移动一位,直到这个整数变成0为止。现在的问题变成怎样判断... 阅读全文
posted @ 2010-11-09 10:17 higirle 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。 分析:这是一道在网络上广为流传的面试题,据说google曾经采用过这道题。所谓一个数m是另一个数n的因子,是指n能被m整除,也就是n % m == 0。根据丑数的定义,丑数只能被2、3和5整除。也就是说如果... 阅读全文
posted @ 2010-11-09 10:07 higirle 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 题目:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。分析:这道题最近经常出现,包括MicroStrategy等比较重视算法的公司都曾先后选用过个这道题作为面试题或者笔试题。首先我们考虑最简单的情况。如果只有1级台阶,那显然只有一种跳法。如果有2级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1级;另外一种就是一次跳2级。现在我们再来讨论一般情... 阅读全文
posted @ 2010-11-08 10:54 higirle 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点。链表结点的定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext;};函数的声明如下:void DeleteNode(ListNode* pListHead, ListNode* pToBeDeleted);分析:这是一道广为流传的Google面试题,能有效考察我们的编程基本功,还能考察... 阅读全文
posted @ 2010-11-08 10:37 higirle 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 1.Data(数据) ->Data Validation(数据有效性) ->Settings(设置) ->List(列) ->Source(数据源)-> Add the souce by ","(自己写数据源: 如1,2,2). 阅读全文
posted @ 2010-11-05 13:31 higirle 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。 分析:这是一道很好的考查对递归理解的编程题,因此在过去一年中频繁出现在各大公司的面试、笔试题中。我们以三个字符abc为例来分析一下求字符串排列的过程。首先我们固定第一个字符a,求后面两个字符bc的排列。当两个字符bc的排列求好之... 阅读全文
posted @ 2010-11-05 11:15 higirle 阅读(447) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。分析:如果我们不考虑时间复杂度,最简单想法的莫过去先在数组中固定一个数字,再依次判断数组中剩下的n-1个数字与它的和是不是等于输入的... 阅读全文
posted @ 2010-11-05 10:47 higirle 阅读(404) 评论(0) 推荐(0) 编辑
摘要: 原贴:趣味算法:字符串反转的N种方法 老赵在反对北大青鸟的随笔中提到了数组反转。这的确是一道非常基础的算法题,然而也是一道很不平常的算法题(也许所有的算法深究下去都会很不平常)。因为我写着写着,就写出来8种方法……现在我们以字符串的反转为例,来介绍这几种方法并对它们的性能进行比较。使用Array.Reverse方法对于字符串反转,我们可以使用.NET类库自带的Array.R... 阅读全文
posted @ 2010-11-04 17:41 higirle 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 数组数组不用多解释了,都了解,这里再重复一些重要的。随机这个词经常出现,在刚学的时候,都说数组在内存中是随机访问的,然而随机数又是随机(不确定)的,这两个概念总是搞不清楚。这里的随机访问与随机存储器的概念一样,google了也百度了,就是搞不到这个随机是什么意思,就只能按random本意来理解了,只好意会。大家都知道数组在内存中存放的方式,是顺序的,也就是在访问某个元素的时候,比如访问第五个元素[... 阅读全文
posted @ 2010-11-04 17:40 higirle 阅读(449) 评论(0) 推荐(0) 编辑
摘要: 栈stack栈是一种先进后出机制,它只允许访问访问一个数据项,即 栈顶(最后插入的数据项)。它有主要的三种操作:push,向栈内压入值;pop,弹出栈顶的值,即返回栈顶的值,并把它从栈内删除;peek,只返回但不删除栈顶。概念很容易理解,无非就像给弹匣压子弹等等这种类比,但是像我这样的新手在刚接触到栈的时候总是很迷茫,认为它很难,其实这只是错觉,主要是因为没有搞清楚栈主要用在那些场景。栈普遍应用于... 阅读全文
posted @ 2010-11-04 17:39 higirle 阅读(262) 评论(0) 推荐(0) 编辑