Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

In mảng xoay trái O(n) thời gian và O(1) không gian trong C

Cho mảng kích thước n, xoay trái mảng từ chỉ số k.

In mảng xoay trái O(n) thời gian và O(1) không gian trong C

Ví dụ

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

Thuật toán

BẮT ĐẦU
HÀM leftRotate(int arr[], int n, int k)
    cal = k % n
    VỚI i=0 ĐẾN n-1
        IN arr[(cal + i) % n]
    KẾT THÚC VỚI
KẾT THÚC

Chương trình C++ ví dụ

#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 << "\n";
}

int main() {
    int a[] = {1, 2, 3, 4};
    int size = sizeof(a) / sizeof(a[0]);
    leftRotate(a, size, 1);
    leftRotate(a, size, 2);
    leftRotate(a, size, 3);
    return 0;
}

Kết quả

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