一阵洗牌

时间:2016-04-14 23:39:36

标签: java arrays

基本上我有一个像这样的简单问题,我很难搞清楚。我知道如何改组一个阵列,但不知道如何让它专门改装到一个像这样的地方。

问题:

数组(完全填充)用作循环缓冲区。在JAVA中编写一个代码片段,将一个元素的所有元素混洗回来,然后将最后一个元素移动到旋转数组的前面。 (无输出)

示例1:

int [] array = new int [] {1,2,3}; 数组将变为{3,1,2}

谢谢!

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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;
 }