一:题目描述:
二:Code:
import org.junit.Test;
/**
* <旋转数组>
*
* @author Administrator
*
*/
public class ReverseArray {
public void print(int[] array) {
for (int i : array) {
System.out.print(i + " ");
}
System.out.println();
}
public void swap(int[] array, int a, int b) {
int temp = array[a];
array[a] = array[b];
array[b] = temp;
}
public void reverse(int[] array, int start, int end) {
if (array == null || array.length <= 1) {
return;
} else {
for (int i = start, j = end; i < j; i++, j--) {
swap(array, i, j);
}
}
}
public void rotate(int[] nums, int k) {
if (k == 0) {
return;
}
int n = nums.length;
if (k > n) {
k = k % n;
}
reverse(nums, 0, n - k - 1);
reverse(nums, n - k, n - 1);
reverse(nums, 0, n - 1);
}
@Test
public void testReverse() {
int[] array = { 1, 2, 3, 4, 5, 6, 7 };
print(array);
rotate(array,4);
print(array);
}
}