首页 > 后端开发 > C++ > 在C程序中以O(n)时间复杂度和O(1)空间复杂度打印数组的左旋转

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

PHPz
发布: 2023-09-10 15:45:07
转载
731 人浏览过

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

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

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

示例

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;

}

登录后复制

输出

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

1

2

3

2 3 4 1

3 4 1 2

4 1 2 3

登录后复制

以上是在C程序中以O(n)时间复杂度和O(1)空间复杂度打印数组的左旋转的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板