给定一个大小为 n 的数组和多个整数值,我们需要从给定索引 k 开始旋转数组。
我们希望从索引 k 开始旋转数组,如下所示 - p>

示例
1 2 3 4 5 6 7 8 | Input: arr[] = {1, 2, 3, 4, 5}
K1 = 1
K2 = 3
K3 = 6
Output:
2 3 4 5 1
4 5 1 2 3
2 3 4 5 1
|
登录后复制
算法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | START
Step 1 -> Declare function void leftRotate(int arr[], int n, int k)
Declare int cal = k% n
Loop For int i=0 and i<n and i++
Print arr[(cal+i)%n]
End
Step 2 -> In main()
Declare array a[]={ 1,2,3,4}
Declare int size=sizeof(a)/sizeof(a[0])
Declare int k=1
Call leftRotate(a, size, k)
Set k=2
Call leftRotate(a, size, k)
Set k=3
leftRotate(a, size, k)
STOP
|
登录后复制
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # include <bits/stdc++.h>
using namespace std;
void leftRotate(int arr[], int n, int k){
int cal = k % n;
for (int i = 0; i < n; i++)
cout << (arr[(cal + i) % n]) << " " ;
cout << "</p><p>" ;
}
int main(){
int a[] = { 1,2,3,4};
int size = sizeof(a) / sizeof(a[0]);
int k = 1;
leftRotate(a, size, k);
k = 2;
leftRotate(a, size, k);
k = 3;
leftRotate(a, size, k);
return 0;
}
|
登录后复制
输出
如果我们运行上面的程序,那么它将生成以下输出
以上是在C程序中以O(n)时间复杂度和O(1)空间复杂度打印数组的左旋转的详细内容。更多信息请关注PHP中文网其他相关文章!