这两天奔波于参加了两场校招面试,其中有很多非常有意思的算法题目,有一部分甚至都没有找到最优的答案,比较开放的算法设计题目。 其实面试不只是算法题的交流,当中还穿插着各式各样的非技术问题,毫无防备,都不知道如何展示自己了。
看似数学推理的程序设计题:
一个盒子中有100个白球,100个黑球,每次从盒子中不放回的取出两个球,如果取得的两个球是颜色相同,放入一个白球,如果取得的两个球颜色不同,放入一个黑球?最后盒子中剩下一个黑球的概率为多少?
拓展:一个盒子中有m个白球,n个黑球,按照上面的方案,最后盒子中剩下一个黑球的概率为多少?
旧的瓶子装上了新的酒的题:
归并排序都应该非常了解,但是当描述完思路之后,面试官有可能说你来实现一个迭代版本的归并排序?
leetcode中有一个水槽装水的问题,
Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.
For example,
Given [0,1,0,2,1,0,1,3,2,1,2,1]
, return 6
.
时间复杂度O(n),three-pass的算法比较容易想到,one-pass的算法呢?