https://www.hackerrank.com/challenges/ctci-array-left-rotation阵列:左旋转用C
左旋转操作大小为n的一个阵列上的每个数组元素的移动1个单位到左侧。例如,如果在阵列[1,2,3,4,5]上执行2次左旋转,则阵列将变为[3,4,5,1,2]
执行k次旋转并打印。
这里就是我有这么远,但它只能通过一个互动得好,没有看到我在做什么错
int main(){
int n; //size
int k; //number of rotations
int a_i; //index
scanf("%d %d",&n,&k);
int *a = malloc(sizeof(int) * n); //input array
for(a_i = 0; a_i <= n; a_i++){
scanf("%d",&a[a_i]);
}
int temp;
for(a_i = 0; a_i <= k; a_i++){
temp = a[0];
for(a_i = 0; a_i < n-1; a_i++) {
a[a_i] = a[a_i+1];
}
a[a_i] = temp;
}
for(a_i = 0; a_i < n; a_i++){
printf("%d ", a[a_i]);
}
return 0;
}
由于唯一重要的是程序的输出,所以甚至不需要旋转数组的内容。只需从'k'打印到'n-1',然后从'0'打印到'k-1'。 – user3386109