Решение Hackerrank для минимального расстояния

В этой статье вы можете найти решение задачи Хакерранк Минимальное расстояние. Следующий раздел содержит описание задачи, предоставленной веб-сайтом Hackerrank:

Расстояние между двумя значениями массива — это количество индексов между ними. Для заданного a найдите минимальное расстояние между любой парой одинаковых элементов массива. Если такого значения не существует, вернуть -1.

Давайте проясним это на примере. На вход будет передан массив, подобный тому, что на изображении ниже, и мы хотим найти минимальное расстояние между одинаковыми значениями.

Как вы можете видеть на изображении, минимальное расстояние принадлежит числу 4 со значением 3, которое будет возвращено в выводе.

Решение

Существует множество различных подходов к решению этой проблемы. но один из самых простых выглядит следующим образом:

public static int minimumDistances(List<Integer> a) {
    int result = -1 ;
    for( int i = 0 ; i<a.size() ; i++){
        for( int j = i+1 ; j<a.size() ; j++){
            int distance = -1;
            if( a.get(i).equals(a.get(j)) ){
                distance = j - i;
                if (distance < result || result == -1 ) result = distance;
                break;
            }
        }
    }
    return result;
}

Код будет просматривать элементы один за другим и проверять, существует ли в списке какой-либо эквивалентный элемент. После этого расстояние будет сохранено и изменено, если какое-либо расстояние было короче, чем то, которое было сохранено ранее.

Мы рекомендуем, прежде чем просто использовать код, попытаться решить проблему самостоятельно и попробовать проверить это решение на случай, если вы не прошли все тесты.

Надеюсь, эта статья помогла вам, и, пожалуйста, поддержите меня своими аплодисментами за историю. если вы не знаете, как это просто так:

Или купи мне кофе здесь!