Создание хэшета для обработки этой задачи слишком дорого. Демонстративно, на самом деле, все они говорят вам не использовать API коллекций, потому что они не хотят слышать хеш слова. Таким образом, этот код оставляет следующий код.
Обратите внимание, что вы предложили им двоичный поиск ПОСЛЕ сортировки массива: это не имеет смысла, что может быть причиной отклонения вашего предложения.
ВАРИАНТ 1:
public static void removeDuplicates(String[] input){
Arrays.sort(input);//Use mergesort/quicksort here: n log n
for(int i=1; i<input.length; i++){
if(input[i-1] == input[i])
input[i-1]=null;
}
}
ВАРИАНТ 2:
public static String[] removeDuplicates(String[] input){
Arrays.sort(input);//Use mergesort here: n log n
int size = 1;
for(int i=1; i<input.length; i++){
if(input[i-1] != input[i])
size++;
}
System.out.println(size);
String output[] = new String[size];
output[0]=input[0];
int n=1;
for(int i=1;i<input.length;i++)
if(input[i-1]!=input[i])
output[n++]=input[i];
//final step: either return output or copy output into input;
//here I just return output
return output;
}
ВАРИАНТ 3: (добавленные 949300, на основании варианта 1).Обратите внимание, что этот управляет входным массивом, если это неприемлемо, вы должны сделать копию.
public static String[] removeDuplicates(String[] input){
Arrays.sort(input);//Use mergesort/quicksort here: n log n
int outputLength = 0;
for(int i=1; i<input.length; i++){
// I think equals is safer, but are nulls allowed in the input???
if(input[i-1].equals(input[i]))
input[i-1]=null;
else
outputLength++;
}
// check if there were zero duplicates
if (outputLength == input.length)
return input;
String[] output = new String[outputLength];
int idx = 0;
for (int i=1; i<input.length; i++)
if (input[i] != null)
output[idx++] = input[i];
return output;
}
* Почему бы вам не использовать API коллекций? –
Все проблемы массивного что-то с эффективностью времени и пространства, кажется, решаются путем хэширования в эти дни. Если они не хотели, чтобы вы использовали API коллекций, я подозреваю, что они хотят, чтобы вы описали функцию хэширования самостоятельно. –