我有一个ArrayList<String>,我想从中删除重复的字符串.我怎样才能做到这一点?
我被要求编写自己的实现来删除数组中的重复值.这就是我创造的.但经过1,000,000个元素的测试后,需要很长时间才能完成.我可以做些什么来改进我的算法或删除任何错误?
我需要写我自己的实现-不使用Set,HashSet等等.或者任何其他工具,如迭代器.只需一个数组即可删除重复项.
public static int[] removeDuplicates(int[] arr) {
int end = arr.length;
for (int i = 0; i < end; i++) {
for (int j = i + 1; j < end; j++) {
if (arr[i] == arr[j]) {
int shiftLeft = j;
for (int k = j+1; k < end; k++, shiftLeft++) {
arr[shiftLeft] = arr[k];
}
end--;
j--;
}
}
}
int[] whitelist = new int[end];
for(int i = 0; i < end; …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个程序,它将生成一个随机的十个整数数组(1到6之间的整数),然后我必须形成另一个数组,删除所有重复项.所以{1,3,5,5,3,4,2,2,2,1}应该返回{1,3,5,4,2}.问题是我得到了答案,但输出数组在重复项所在的地方包含0,我不知道如何减少临时数组的长度(如果可能的话).这是我的计划:
import java.util.*;
public class Lab9Tut12{
public static void main (String[]args){
int [] numbers = new int[10];
//int length = 10;
int[] temp = new int[length];
for(int i=0;i<10;i++){
numbers [i] = (int)(Math.random()*6+1);
System.out.print(numbers [i]);
System.out.println();
}
for(int i=1;i<10;i++){
if(numbers[i-1]!=numbers[i]){
temp[i]= numbers[i];
//length--;
}
}
System.out.println(Arrays.toString(temp));
}
Run Code Online (Sandbox Code Playgroud)
}
我无法从已合并为一个的两个数组中删除重复项。我编写了以下合并数组的代码,但我不确定如何从最终数组中删除重复项。假设数组已经排序。
public static int[] merge(int[] list1, int[] list2) {
int[] result = new int[list1.length + list2.length];
int i = 0;
int j = 0;
for (int k = 0; k < (list1.length + list2.length); k++) {
if (i >= list1.length) {
result[k] = list2[j];
j++;
}
else if (j >= list2.length) {
result[k] = list1[i];
i++;
}
else {
if (list1[i] < list2[j]) {
result[k] = list1[i];
i++;
} else {
result[k] = list2[j];
j++;
}
}
}
return result; …Run Code Online (Sandbox Code Playgroud)