首頁 > 後端開發 > C++ > 在C程式中以O(n)時間複雜度和O(1)空間複雜度列印數組的左旋轉

在C程式中以O(n)時間複雜度和O(1)空間複雜度列印數組的左旋轉

PHPz
發布: 2023-09-10 15:45:07
轉載
634 人瀏覽過

給定一個大小為 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 << "</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;
}
登入後複製

輸出

如果我們執行上面的程序,那麼它將產生以下輸出

2 3 4 1
3 4 1 2
4 1 2 3
登入後複製

以上是在C程式中以O(n)時間複雜度和O(1)空間複雜度列印數組的左旋轉的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板