方法一,位置重排,java实现的代码有误,反例如下:用数组{1,2,3,5,4,6,1,2,7}测试,输出结果是-1,但此数组却是有重复元素的,应该输出1或2. 改正方法为,在swap方法执行完的下移行 加上 i--; 即可. //交换完,应该先让i--,然后执行for循环中的i++,这样保持i不变,继续检查此处的索引和元素值是否相等 ​ //直到索引与元素值相等时,才能直接i++检查下一索引元素 ​//因为交换完只能保证从当前索引交换出去的值与那个索引相等,而当前索引交换来的新值不一定与当前索引相等 ​//因此得继续在当前索引下进行检查 ​
点赞

相关推荐

牛客网
牛客企业服务