
传统面试题
soO_007
试试坚持
展开
-
传统面试题 -- 抛硬币连续三次正面的
题目:抛硬币,连续三次为正面的期望值。思路:假设期望是x,如果第一抛是反面,那么第一抛作废,一共需要x+1步,概率为1/2,如果第一抛是正面,第二抛反面,作废,一共需要x+2步,概率为1/4,如果前两抛都正面,第三抛反面,一共需要x+3步,概率为1/8,如果第三抛为正面则完成了,概率为1/8,共三抛。期望为,求解得x=14。...原创 2020-11-15 12:22:06 · 5849 阅读 · 1 评论 -
传统面试题 -- 100个元素找出最大最小值的最少比较次数
题目:100个元素中,找出最大值和最小值,所需的最小比较次数是多少?思路:先对100个数字两两比较,找出相对大的50个和相对小的50个,一共比较了50次。然后分别对两组数组求最大最小值,遍历,因为是拿着一个数和剩下的49个进行比较比较,所以每组是50-1=49次,一共50+49+49=148次。...原创 2020-11-15 12:07:41 · 2092 阅读 · 0 评论 -
传统面试题 -- 0~9组成两个五位数求最小差
题目:0~9共十个数字,组成两个五位数,求最小差的组成。思路:从第一位,即万位思考,肯定是越接近越好,但是这里不要填1和2,因为第一位越接近越好,最近是差1,那么第一位是1,2还是2,3还是3,4都可以,因此先看后面。后四位的差要最接近,假设第一个数字大,第二个小,则要使第一个数字后四位最小,第二个数字后四位最大。因此定下后四位分别是0123和9876,剩下4和5,一大二小,因此为50123和49876,差值最小为247。要点在于不要被第一位早早困住,应当考虑全局。...原创 2020-11-15 10:57:40 · 2602 阅读 · 0 评论 -
传统面试题 -- 牛顿迭代求根
找平方根:找数x的平方根,假设根为r,反复迭代r=(r+x/r)/2即可。例:x=2, r=4r=(4+2/4)/2=2.25r=(2.25+2/2.25)/2=1.579444444r=(1.579444444+2/1.579444444)/2=1.42189r=(1.42189+2/1.42189)/2=1.41423,接近推广到高次方:每次迭代替换成即可。...原创 2020-11-05 00:43:35 · 200 阅读 · 0 评论 -
传统面试题 -- 25匹马中寻找最快的3匹
题目:25匹马, 找出最快的3匹。没有计时器,只能使用五条赛道,因此每次只有结果的排序,没有具体时间。思路:分为五组,进行五次比赛组一:x1 x2 x3 x4 x5组二:x6 x7 x8 x9 x10组三:x11 x12 x13 x14 x15组四:x16 x17 x18 x19 x20组五:x21 x22 x23 x24 x25每组最快为最左,并且顺序为从左到右,此时可以淘汰每组最后两匹组一:...原创 2020-11-04 23:53:15 · 1510 阅读 · 0 评论 -
传统面试题 -- 寻找二维矩阵中相连方块的最大值
题目:给定一个二维矩阵,每个cell代表一个颜色,如board = { {1,1,2,3},{1,2,3,2},{3,2,2,2} },寻找相连方块最大值思路:二重遍历+DFS,DFS完并不用复原,这样总共只遍历矩阵一次,时间复杂度O()代码:int dfs(vector<vector<int> >& board, int x, int y, int cur){ int m = board.size(); int n = board[...原创 2020-11-04 10:37:09 · 445 阅读 · 0 评论