2016-04-14 4 views
0

Grundsätzlich habe ich eine einfache Frage wie diese, die ich habe Schwierigkeiten herauszufinden. Ich weiß, wie man ein Array mischt, aber nicht wirklich sicher, wie es dazu gebracht wird, gezielt zu einem Ort wie einem zurück zu mischen.shuffling array one zurück

Die Frage:

Ein Array (die vollständig aufgefüllt ist) als Ringpuffer verwendet wird. Schreiben Sie ein Codefragment in JAVA, das alle Elemente des Arrays um eins nach hinten verschiebt und das letzte Element an die Vorderseite des gedrehten Arrays verschiebt. (Keine Ausgangssignale)

Beispiel 1:

int [] array = new int [] {1, 2, 3}; Array wird {3, 1, 2}

Vielen Dank!

+1

Das klingt wie Verschieben, nicht schlurfen. – shmosel

Antwort

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; 
}