微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在C程序中以O(n)时间复杂度和O(1)空间复杂度打印数组的左旋转

给定一个大小为 n 的数组和多个整数值,我们需要从给定索引 k 开始旋转数组。

我们希望从索引 k 开始旋转数组,如下所示 - p>

在C程序中以O(n)时间复杂度和O(1)空间复杂度打印数组的左旋转

示例

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

算法

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

示例

#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 << "

"; } 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; }

输出

如果我们运行上面的程序,那么它将生成以下输出

2 3 4 1
3 4 1 2
4 1 2 3

以上就是在C程序中以O(n)时间复杂度和O(1)空间复杂度打印数组的左旋转的详细内容,更多请关注编程之家其它相关文章

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐