У меня возник вопрос с интервью, и мой алгоритм передает только примерные тестовые примеры и не прошел все тестовые примеры.
Вопрос. Учитывая отсортированный целочисленный массив, возвращайте сумму массива так, чтобы каждый элемент был уникальным, добавляя некоторые числа для дублирования элементов, чтобы сумма уникальных элементов была минимальной.
I.e., если все элементы в массиве уникальны, верните сумму. Если некоторые элементы дублируются, то увеличивайте их, чтобы убедиться, что все элементы уникальны, так что сумма этих уникальных элементов минимальна.
Некоторые примеры:
-
input1[] = { 2, 3, 4, 5 }
= >return 19
= 2 + 3 + 4 + 5 (все элементы уникальны, поэтому просто добавьте их) -
input2[] = { 1, 2, 2 }
= >return 6
= 1 + 2 + 3 (индекс 2 дублируется, поэтому увеличивайте его) -
input3[] = { 2, 2, 4, 5 }
= >return 14
= 2 + 3 + 4 + 5 (индекс 1 дублируется, поэтому увеличивайте его)
Эти три примера в этом вопросе, мой простой алгоритм следующий и передал данные три примера, но не прошел другие случаи, когда я не мог видеть входы.
static int minUniqueSum(int[] A) {
int n = A.length;
int sum = A[0];
int prev = A[0];
for( int i = 1; i < n; i++ ) {
int curr = A[i];
if( prev == curr ) {
curr = curr+1;
sum += curr;
}
else {
sum += curr;
}
prev = curr;
}
return sum;
}
Я не мог видеть другие входы, которые этот алгоритм не удалось. Я могу думать о других примерах ввода:
{1, 1, 1, 1} --> {1, 2, 3, 4}
{1, 1, 2, 2, 3, 3, 3} --> {1, 2, 3, 4, 5, 6, 7}
{1, 2, 4, 4, 7, 7, 8} --> I think this should be {1, 2, 3, 4, 6, 7, 8} and my algorithm fails in this example because my algorithm has {1, 2, 4, 5, 7, 8, 9} whose sum is not minimum
Каковы некоторые другие тестовые примеры и алгоритм, который может передавать все случаи?
Некоторые люди жалуются, что вопрос не ясен. Я хотел бы сообщить вам о проблеме. Не было четкого описания о добавленном номере, если оно будет разрешено только положительным или положительным и отрицательным. Учитывая три примера ввода и вывода, а также некоторые другие случаи ввода и вывода, которые вам не позволяют увидеть, напишите программу, чтобы передать все другие невидимые случаи ввода-вывода. Это был вопрос.