Поворот массива влево

Сегодня мы рассмотрим, как повернуть массив влево.

В этом вопросе о повороте влево может быть сказано, что нужно повернуть 1 цифру влево или n цифр влево, давайте посмотрим оба варианта в этом посте

  1. Поворот влево на 1 цифру
  2. Поворот влево на N цифр

Бонус:- давайте рассмотрим коллекции, встроенные в ротацию для правого и левого вращения

давайте посмотрим поворот влево на 1 цифру

int[] reverseTheArrayByOne(int[] arr) {
    int temp = arr[0];
    for (int i = 1; i < arr.length; i++) {
      arr[i - 1] = arr[i];
    }

    arr[arr.length - 1] = temp;
    return arr;
  }
Вход в полноэкранный режим Выйти из полноэкранного режима

Поскольку мы собираемся переместить только одну цифру, мы можем сохранить первую цифру в temp и переместить остальные элементы влево, а temp добавить к последнему индексу.

Рассмотрим N-вращение

Мы можем просто выполнить N rotate, выполнив rotate 1 digit N раз, чтобы получить ответ

int[] reverseTheArrayByNTimesEasy(int[] arr, int digits) {
    for (int i = 0; i < digits; i++) {
      arr = reverseTheArrayByOne(arr);
    }
    return arr;
  }

Вход в полноэкранный режим Выйти из полноэкранного режима

или мы можем использовать этот метод

int[] reverseTheArrayByNDigits(int[] arr, int digits) {
    int[] temp = new int[digits];
    for(int i=0;i<digits;i++){
      temp[i]=arr[i];
    }
    for(int i=0;i<arr.length-digits;i++){
        arr[i]=arr[digits+i];
    }
    for(int i=0;i<temp.length;i++){
        arr[digits-1+i]=temp[i];
    }
    return arr;
  }
Войти в полноэкранный режим Выйти из полноэкранного режима

Чтобы повернуть N цифр, мы можем использовать массив temp для хранения N цифр, переместить оставшиеся цифры в начало и скопировать массив temp в последний.

Бонус :- мы можем просто использовать метод rotate коллекции для выполнения этого массива Rotate

int n = 1; 
int[] arr = {2, 5, 8, 9, 12};
    List<Integer> arrList = 
Arrays.stream(arr).mapToObj((e) -> Integer.valueOf(e)).collect(Collectors.toList());
    Collections.rotate(arrList,n);
    System.out.println(arrList.toString());
Войти в полноэкранный режим Выйти из полноэкранного режима

Здесь n — количество цифр, которые нужно повернуть, по умолчанию Collections.rotate будет выполнять поворот вправо, если вы хотите повернуть влево, вы можете дать отрицательное значение.

Collections.rotate(arrList, 1) выполнит правый поворот
Collections.rotate(arrList,-1) выполнит поворот влево

Оцените статью
devanswers.ru
Добавить комментарий