Найти элемент по индексам после n числа поворотов - PullRequest
0 голосов
/ 25 октября 2019

Этот вопрос от хакерранка. https://www.hackerrank.com/challenges/circular-array-rotation/problem

Ввод:

  1. массив (int []) из n чисел

  2. число (k) извращения 1> = k <= n </p>

  3. массив (int []) размера m индексов повернутого массива

Вывод:массив (int []) размером m с элементами повернутого массива

Я решил это с помощью подхода поворота, который изменит положение элементов массива. Я пытался решить это без изменения исходного массива (путем математического манипулирования индексом повернутого массива). вот метод, который я написал, он работает для случаев использования, которые я использовал, но на хакерранке он показывает, что 1 тест не пройден.

private int[] withoutRotateArray(int[] input, int k, int[] checkIndex) {
        for (int i = 0; i < checkIndex.length; i++) {
            if(checkIndex[i] < k) {
                checkIndex[i] = input[input.length - (k - checkIndex[i])];
            } else {
                checkIndex[i] = input[Math.abs(k - (checkIndex[i]))];
            }
        }
        return checkIndex;
    }

Может кто-нибудь помочь мне понять, что не так в моем методе?

Пример:

массив I / P [1,2,3,4,5]

число оборотов: 2

Контрольный индекс: [2,4]

массив O / P [1,3]

1 Ответ

0 голосов
/ 25 октября 2019

В HackerRank вы должны позаботиться о том, чтобы не изменять какие-либо объекты / массивы, которые вы получаете в качестве аргументов (если это не указано в тесте): часто код тестирования полагается на предположение, что ваш код этого не делает.

Поэтому вместо сохранения результата в checkIndex создайте для него новый массив и верните его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...