日期:2014-05-20  浏览次数:20699 次

一道面试智力题目。
1--100000 数列按一定顺序排列,有一个数字排错,如何纠错?写出最好  
方法。两个数字呢?

------解决方案--------------------
确实,这个时候有必要阐明一下什么是"排错"

有两种理解:一是数字没有放对位置,二则是上面各位给出的算法:比较相邻位置。

如果排错得理解是没有放对位置的话,那么15楼所持的观点很对。即不可能出现一个数字错的情况。而且两个数字错位的情况也只可能出现在对等位置上,如:123456,只肯能是,1和6;2和5;3和4;这样下来时间复杂度就可以减半了。

但是如果他排错的概念是:相邻位置出现错乱,比如 12345,排成了142356,那么这样还只能找出一个数字错位的情况。

不管是那种概念,找出那个位置的算法是最重要的。