列印左旋陣列,C 語言中 O(n) 時間和 O(1) 空間。


我們給定一個大小為 n 的陣列和多個整數值,我們需要從給定的索引 k 旋轉陣列。

我們希望從一個索引 k 旋轉陣列如下 −

示例

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

更新於: 22-Aug-2019

103 次瀏覽

開啟你的 職業生涯

完成課程獲得認證

開始行動
廣告
© . All rights reserved.