今天做笔试题有个问题没考虑出来说是:1-10000按照某种顺序进行排序结果有一个数出错了,问你该怎么办?说出最后的纠错方法。如果是两个数呢 ?
小弟菜鸟,对这个问题都不知道该如何分析。说说大家是怎么分析解决这个问题的。

解决方案 »

  1.   

    这10000个数可以看作排好序的放在数组中的吧,假设是升序,那么如果没有排错,数组的下标之和和数组元素之和应该相等,那么,从0开始加吧,什么时候,相同步长,下标之和和元素之和不等,就是那个数排错了。两个数可以考虑a+b=x,ab=y解决,也是首先假设下标和元素对应。
      

  2.   

    恩,这个解决方案很好。
    不过“两个数可以考虑a+b=x,ab=y解决”还是没想明白怎么解决
      

  3.   

    这10000个数可以看作排好序的放在数组中的吧,假设是升序,那么如果没有排错,数组的下标之和和数组元素之和应该相等,那么,从0开始加吧,什么时候,相同步长,下标之和和元素之和不等,就是那个数排错了。两个数可以考虑a+b=x,ab=y解决,也是首先假设下标和元素对应。
       对哦。。不过a+b=x,ab=y确实没懂~ a是什么 b是什么x代表什么?
      

  4.   

    我明白是什么意思了,就是说把那两个下标和元素不相对应的两个数单独拿出来,一个赋值给a一个赋值给b,之后看看ab是多少,a+b是多少这样就可以求出a,b的值了。