程序员面试100题
文章平均质量分 80
地下室森林
1寻找大地的幻想家独自行走的大学生2地下室人的通病就是把人生看得太透彻了
展开
-
百度最新面试题集锦
1、实现一个函数,对一个正整数n,算得到1需要的最少操作次数。操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。例子:func(7) = 4,可以证明最少需要4次运算n = 7n-1 6n/2 3n-1 2n/2 1要求:实现函数(实现尽可能高效) int func(unsign int n);n为输入,返回最小的运算次数。给出思原创 2013-11-11 19:49:57 · 1040 阅读 · 0 评论 -
程序员面试100题:求子数组的最大和
1.题目 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。2.算法初级分析 刚开始接触,我们原创 2013-11-11 19:38:08 · 1414 阅读 · 0 评论 -
程序员面试100题:左旋转字符串
1.题目描述定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部,如把字符串 abcdef 左旋转2位得到字符串 cdefab 。请实现字符串左旋转的函数,要求对长度为n的字符串操作的时间复杂度为O(n),空间复杂度为O(1)。 2.解决方法解法一:不考虑时间和空间的限制。设移动的位数为k。则循环k次,每次移动1位。这样的空间复杂度是O(1),时间复杂度是O(原创 2013-11-11 20:16:04 · 1126 阅读 · 0 评论 -
最短路问题
1.最短路径简介(维基)最短路径问题是图论研究中的一个经典算法问题, 旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。 算法具体的形式包括:确定起点的最短路径问题 - 即已知起始结点,求最短路径的问题。适合使用Dijkstra算法。确定终点的最短路径问题 - 与确定起点的问题相反,该问题是已知终结结点,求最短路径的问题。在无向图中该问题与确定起点的问题完全等同,在有向图中该原创 2013-11-09 21:13:40 · 1196 阅读 · 0 评论 -
堆排序
1.堆知识二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆。原创 2013-11-09 22:55:42 · 930 阅读 · 0 评论 -
Hash表
天天AC,日日惊喜。每天学点算法,每天进步一点点。1.哈希表的定义 散列表(Hash table,也叫哈希表),是根据关键字(Key value)而直接访问在内存存储位置的数据结构。也就是说,它通过把键值通过一个函数的计算,映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。(维基) 个人的理解:举原创 2013-11-06 21:39:40 · 1047 阅读 · 0 评论 -
程序员面试——走台阶问题
题目1:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法。题目2:每次上台阶,每步都要么上两阶,要么上三阶,求总共多少总跳法http://acm.fafu.edu.cn/problem.php?id=1077题目3:一个台阶总共有n级,如果一次可以跳1-n级。求总共有多少总跳法。第一题解法:对于第一题可以找出规律递归:f(n)原创 2013-11-13 22:20:54 · 1473 阅读 · 0 评论