摘要: 出题:数组中有一个数字出现的次数超过了数组长度的一半,请找出这个数字;分析:解法1:首先对数组进行排序,时间复杂度为O(NlogN),由于有一个数字出现次数超过了数组的一半,所以如果二分数组的话,划分元素肯定就是这个数字;解法2:首先创建1/2数组大小的Hash Table(哈希表可以替代排序时间,... 阅读全文
posted @ 2014-05-22 10:12 Leo C. 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 出题:数值的整数次方(不考虑溢出),实现函数double Power(double base, int exponent);分析:解法1:最简单的方法是使用直接的乘法运算,但是注意处理几种特殊情况:exponent为负数,base为0;解法2:将exponent分解成2的不同次方相加的表达式,通过重... 阅读全文
posted @ 2014-05-22 09:45 Leo C. 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 出题:将一个数组最开始的k个(K小于数组大小N)元素照搬到数组末尾,我们称之为数组的旋转;现在有一个已经排序的数组的一个旋转,要求输出旋转数组中的最小元素,且时间复杂度小于O(N);分析:时间复杂度小于O(N)也就是不能用常规的遍历思路;可以将数组看成两个都是递增序列(假设为升序)的子数组,并且前半... 阅读全文
posted @ 2014-05-22 09:32 Leo C. 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 出题:要求用递归将一个栈结构的元素内外颠倒;分析:本题再次说明系统栈是程序员最好的帮手,但递归度较高所以时间复杂度较大,可以使用空间换时间的方法(额外数组保存栈元素,然后逆向压入);第一层递归(清空栈元素,并使用系统栈保存):[1,2,3,4,5],栈顶元素为1,将1弹出之后,递归处理[2,3,4,... 阅读全文
posted @ 2014-05-22 09:26 Leo C. 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 出题:将只包含2,3,5的因子的数称为丑数(Ugly Number),要求找到前面1500个丑数;分析:解法1:依次判断从1开始的每一个整数,2,3,5是因子则整数必须可以被他们其中的一个整除,如果不包含任何其他因子则最终的结果为1;解法2:小丑数必然是某个大丑数的因子,也就是乘以2,3,或者5之后... 阅读全文
posted @ 2014-05-22 09:19 Leo C. 阅读(262) 评论(0) 推荐(0) 编辑