【发布时间】:2018-08-19 09:00:06
【问题描述】:
与下面的代码相比,有没有更好的方法从数组列表中删除重复数据,当遇到更大的输入时,它在 O(n) 中工作。任何建议,将不胜感激。谢谢你。
注意:- 不能使用任何额外的空间,应该就地解决。
输入 :- 它将是一个带有 dups 的排序数组。
代码:-
public int removeDuplicates(ArrayList<Integer> a) {
if(a.size()>1){
for( int i=0;i<a.size()-1;i++ ) {
if(a.get(i).intValue() == a.get(i+1).intValue() ) {
a.remove(i);
i--;
}
}
}
return a.size();
}
请在 coder pad 链接测试代码。
【问题讨论】:
-
我对java不是很流利,只是一个想法,你有没有想过将arraylist转换为一键设置stackoverflow.com/questions/1429860/…
-
应该在原地做...不要使用额外的空间
-
像
[1, 2, 1]这样的列表会发生什么?问题中的代码将返回 3 并保持列表不变。另外,对于它的价值,我之前做过基准测试,发现使用临时的HashSet实际上是在 Java 中删除重复项的最快方法。 -
数组保证有序?
标签: java algorithm data-structures