2016-04-14 2 views
0

В принципе у меня такой простой вопрос, что у меня возникли проблемы с выяснением. Я знаю, как перетасовывать массив, но не совсем уверен, как заставить его перетасовать в таких местах, как один.shuffling array one back

вопрос:

Массив (который полностью заполнен) используется в качестве кольцевого буфера. Напишите фрагмент кода в JAVA, который будет перемешать все элементы массива назад один и переместить последний элемент в начало повернутого массива. (Нет выходов)

Пример 1:

INT [] массив = новый INT [] {1, 2, 3}; массив станет {3, 1, 2}

Спасибо!

+1

Это звучит как сдвиг, не перетасовки. – shmosel

ответ

2
public int[] shiftLeft(int[] nums) { 
    if (nums == null || nums.length <= 1) { 
     return nums; 
    } 
    int start = nums[0]; 
    System.arraycopy(nums, 1, nums, 0, nums.length - 1); 
    nums[nums.length - 1] = start; 
    return nums; 
} 
0
// 1,2,3 
// 3,2,1 
// 3,1,2 

public int[] swapLastIndex(int[] array) { 
    if(array.length < 2) return array; 
    for(int i=0; i<array.length; i++) 
     swap(i, array.length-1);  
    return array; 
} 

private void swap(int x, int y) { 
    int tmp = array[x]; 
    array[x] = array[y]; 
    array[y] = tmp; 
}