Java 使用方法删除数组中的重复项
我试图使用一种方法从数组中删除重复的数字,但不幸的是,我无法解决它。这就是我迄今为止所做的:Java 使用方法删除数组中的重复项,java,Java,我试图使用一种方法从数组中删除重复的数字,但不幸的是,我无法解决它。这就是我迄今为止所做的: //method code public static int[] removeDuplicates(int[] input){ int []r=new int[input.length]; for (int i = 0; i < input.length; i++) { for (int j = 0; j < input.length; j++) {
//method code
public static int[] removeDuplicates(int[] input){
int []r=new int[input.length];
for (int i = 0; i < input.length; i++) {
for (int j = 0; j < input.length; j++) {
if ((input[i]==input[j]) && (i != j)) {
return r;
}
}
}
return r;
}
//方法代码
公共静态int[]移除副本(int[]输入){
int[]r=新的int[input.length];
for(int i=0;i
最简单的方法是将所有元素添加到一个集合中
public static int[] removeDuplicates(int[] input){
Set<Integer> set = new HashSet<Integer>();
for (int i = 0; i < input.length; i++) {
set.add(input[i]);
}
//by adding all elements in the Set, the duplicates where removed.
int[] array = new int[set.size()];
int i = 0;
for (Integer num : set) {
array[i++] = num;
}
return array;
}
publicstaticint[]移除的复制(int[]输入){
Set=newhashset();
for(int i=0;i
您可以这样做:
public static int[] removeDuplicates(int[] input){
boolean[] duplicate = new boolean[input.length];
int dups = 0;
for (int i = 0; i < input.length; i++) {
if(duplicate[i])
continue;
for (int j = i + 1; j < input.length; j++) {
if ((input[i]==input[j])) {
duplicate[j] = true; // j is duplicate
++dups;
}
}
}
int[] r = new int[input.length] - dups;
int index = 0;
for(int i = 0; i < input.length; ++i)
r[index++] = input[i];
return r;
}
publicstaticint[]移除的复制(int[]输入){
boolean[]duplicate=新的boolean[input.length];
int-dups=0;
for(int i=0;i
也可以在
O(n log n)
中完成 如果您不希望集合中有重复项,那么首先不应该使用数组。使用一个集合,你将永远不会重复删除放在首位
如果您只是“有时”不希望重复,那么您最好进一步解释您的情况。您正在寻找一个,并且
包含方法。您知道如何将元素添加到数组中吗?您想创建自己的方法来删除重复项吗?否则,正如MichaelIT所说,你可以使用set,其中set不允许重复项。在众多其他项中,可能重复项没有,实际上我需要在不使用set的情况下解决它。这将改变元素的顺序,这可能是个问题,也可能不是。谢谢@nakosspy,但我需要在没有设置的情况下解决它。还有什么其他方法呢?这是学校作业吗?@我想这是个错误。它必须是if(!isExists(result,i))而不是if(isExists(result,i))。你能编辑它吗?@nakosspy:看起来像。此外,结果数组可能应该缩短。这不是我的答案,所以我不想编辑它。B'Tasneem最好自己找出解决方案。你应该在那里放一条评论,“如果你不想在你的收藏中重复,那么你首先不应该使用数组”。这就像说“如果需要命令行参数为整数,则不应使用main(String[]argv)
”。有输入数据之类的东西,它并不总是以程序最方便的形式出现。的确,有时输入数据的格式是无法约束的。但这些情况比你想象的要少见,应该尽可能避免。输出约束也是如此。