上一页 1 ··· 30 31 32 33 34 35 36 37 38 ··· 52 下一页
摘要: 一 题目:打印1到最大的n位数 二 不考虑大数解法 三 字符串模拟算法解法 解决这个问题需要表达一个大数。最常用也是最容易的方法是用字符串或者数组表达大数。该算法的步骤如下: Step1.把字符串中的每一个数字都初始化为'0'; Step2.每一次为字符串表示的数字加1,再打印出来; 阅读全文
posted @ 2018-04-15 22:09 Fate0729 阅读(200) 评论(0) 推荐(0)
摘要: 一 题目:二进制中1的个数 二 可能引起死循环的解法 00001010>>2=00000010 10001010>>3=11110001 那么,问题来了:上面的方法如果输入一个负数,比如0x80000000,如果一直做右移运算,最终这个数字就会变成0xFFFFFFFF而陷入死循环。 三 避免死循环的 阅读全文
posted @ 2018-04-14 21:19 Fate0729 阅读(376) 评论(0) 推荐(0)
摘要: 一 题目:斐波那契数列 二 效率很低的解法 很多C/C++/C#/Java语言教科书在讲述递归函数的时候,大多都会用Fibonacci作为例子,因此我们会对这种解法烂熟于心 上述递归的解法有很严重的效率问题,通过求解第10项的调用过程图来分析: 从上图中不难发现:在这棵树中有很多结点是重复的,而且重 阅读全文
posted @ 2018-04-14 18:00 Fate0729 阅读(262) 评论(0) 推荐(0)
摘要: 一 题目:旋转数组中的最小数字 这道题最直观的解法并不难,从头到尾遍历数组一次,我们就能找出最小的元素。这种思路的时间复杂度显然是O(n)。但是这个思路没有利用输入的旋转数组的特性,肯定达不到面试官的要求。 我们注意到旋转之后的数组实际上可以划分为两个排序的子数组,而且前面的子数组的元素都大于或者等 阅读全文
posted @ 2018-04-14 17:06 Fate0729 阅读(290) 评论(0) 推荐(0)
摘要: 一 题目:重建二叉树 二 思路 先根据前序遍历序列的第一个数字创建根结点,接下来在中序遍历序列中找到根结点的位置,这样就能确定左、右子树结点的数量。在前序遍历和中序遍历的序列中划分了左、右子树结点的值之后,就可以递归地去分别构建它的左右子树。 三 代码实现 (1)索引实现 (2)指针实现 阅读全文
posted @ 2018-04-13 23:22 Fate0729 阅读(171) 评论(0) 推荐(0)
上一页 1 ··· 30 31 32 33 34 35 36 37 38 ··· 52 下一页