旋转数组:
例如:数组中元素为 123456,翻转后为561234
给定一个数组,长度为n,要求把后k个元素移动到前面,前n-k个元素移动到后面
//先改进面试题一中的方法,将从头到尾翻转改为从i到j翻转
public int[] changeArray2(int[] array, int i, int j) {
int temp = 0;
while (i < j) {
temp = array[i];
array[i] = array[j];
array[j] = temp;
i++;
j--;
}
//实现旋转数组就可以通过下面的方式来实现
//1.翻转前半部分2.翻转后半部分3.反转整个数组
public int[] swap(int[] array, int k) {
int n = array.length - 1;// n=5
changeArray2(array, 0, n - k);
changeArray2(array, n - k + 1, n);
changeArray2(array, 0, n);
return array;
}
}
本文介绍了一种旋转数组的有效算法,通过三个步骤实现数组元素的重新排列:首先翻转数组的前半部分,接着翻转后半部分,最后翻转整个数组。这种方法避免了额外空间的使用,提高了操作效率。
759

被折叠的 条评论
为什么被折叠?



