2009年4月10日星期五

两道程序员面试题

1.能否不利用额外的辅助空间,将两个int型数交换顺序?

2.现有两根不均匀的香,它们每根都能燃烧整整一个小时,现在给你两跟这样的香,你能用它确定15分钟的间隔吗?

上次跟一个同学一起去吃饭,他问了我以上两个传说中是面试题的问题,觉得很有意思!不过可惜的是这两题是在他的提示下才搞定了。

第一题相对容易一点:通过下面三步操作就可以搞定了
a = a + b;
b = a - b;
a = a - b;
但是这个我感觉是有点问题的,因为要是a,b相加正好超过了int的上限,岂不是出现数据丢失,何谈两者交换呢?

第二题有点像脑筋急转弯,我费了好大劲都想不出来,在同学提醒了我一炷香两头一起烧就能确定半个小时了,我才恍然大悟。想了一会,便给出了答案:先将一炷香两头同时点燃,这是也将另一根香的一头点燃,在第一根香烧完后,就只有确定了第二根香还能烧半个小时了,这时将它的另外一边也点燃,它就只能支持15分钟了。

两道题其实都比较简单,但是需要脑袋要灵活,善于跳出常规的思路!^_^

0 评论: