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

有序数组去掉重复数据项,求良方..
一个有序的数组中删除掉重复的数据项而不破坏其有序性。一种方法是没发现一个重复的数据项,就从这个位置开始到数组结尾都向前移动一个位置,但是这就导致消耗很长的O(n^2)的时间级。要求设计算法,不论有多少重复数据,要确保数据项最多只能移动一次。这样算法就只消耗O(n)数量级额时间。

------解决方案--------------------
转到map里处理呢
------解决方案--------------------
从头到尾找重复,删掉的位置就先空着,最后整体挪一次。。。。。。
------解决方案--------------------
要求写算法啊.如果没这要求,倒可以把数据放Set里,再把数据放回数组里.
------解决方案--------------------
声明一个ArrayList,然后遍历你的有序数组,
遍历时以if(list[i] == arraylist.get(arraylist.size()))为条件
如果满足就说明重复,跳过当前遍历
否则就将这个元素加到ArrayList里
另外注意第一次遍历的数组越界问题
------解决方案--------------------
其实...在java里这个算法基本没有太多的效率问题
java并不直接复制对象,除非是object clone操作
除此以外都是复制引用

所以,既然不存在对象复制到问题,算法时间消耗也无需太多考虑了