这个是旋转数组的题,写了一下代码如下
public static void rotateArray(int[] a, int k){
if(k%a.length==0){
return ;
}
if(k>a.length){
k = k%a.length;
}
reverse(a,0,a.length-1);
reverse(a,0,k-1);
reverse(a,k,a.length-1);
}
public static void reverse(int[] a, int start, int end){
while(start<end){
int tmp = a[end];
a[end] = a[start];
a[start] = tmp;
start++;
end--;
}
}
void Print_rigtmove(int *ar, int len, int k) { int i = len-k;
int count = 0; for(;count<len;i++,count++) { if (i
>=len) i %=len; printf("%d ",ar[i]);
} }
比较偷懒的代码。。。
int[] charge(int n,int a[]){ int i = 0; int r[] = new int[a.length]; if (n>=a.length){
n%=a.length; } if (n<0){
} for (int j = a.length-n;j<a.length;j++){
r[i]=a[j]; i++; } for (int j=0;j<a.length-n;j++){
r[i]=a[j]; i++; } return r; }