как сократить время - PullRequest
       89

как сократить время

0 голосов
/ 21 февраля 2020
#include <iostream>
using namespace std;

void rotateByOne(int arr[], int n)
{
    int x = arr[0];
    for (int y = 0; y < n - 1; y++)
    {
        arr[y] = arr[y + 1];
    }
    arr[n - 1] = x;
}

int main()
{
    int n, d;

    cin >> n >> d;

    int arr[n];

    for (int i = 0; i < n; i++)
    {
        cin >> arr[i];
    }

    while (d != 0)
    {
        rotateByOne(arr, n);
        d--;
    }

    for (int i = 0; i < n; i++)
    {
        cout << arr[i] << " ";
    }    

    return 0;
}

Как я могу уменьшить время компиляции этого кода, который написан так, чтобы принимать входные данные массива из n целых чисел и вращать массив, оставленный d раз ....... Я нашел это на рангах хакеров и geeksforgeeks, Я получаю правильный вывод из этого кода, но проблема в времени.

Ответы [ 2 ]

2 голосов
/ 21 февраля 2020

Если цель состоит в том, чтобы просто написать повернутый массив, вам не нужно изменять массив или создавать другой.

Примечание: использование двух циклов вместо одного позволяет избежать использования по модулю операции.

#include <iostream>
#include <vector>

int main() {
    std::vector<int> arr = {0, 1, 2, 3, 4, 5, 6, 7};
    int n = arr.size();
    int d = 3;

    for (int i = d; i < n; ++i) {
        std::cout << arr[i] << " ";
    }
    for (int i = 0; i < d; ++i) {
        std::cout << arr[i] << " ";
    }
    std::cout << "\n";
    return 0;
}
0 голосов
/ 21 февраля 2020

Научитесь использовать готовые алгоритмы и прочитайте документацию .

#include<iostream>
#include<vector>
#include<algorithm>
#include<iterator>

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int n, d;
    std::cin >> n >> d;

    std::vector<int> v;
    v.reserve(n);
    std::copy_n(std::istream_iterator<int>{std::cin}, n, std::back_inserter(v));

    std::rotate_copy(v.begin(), v.begin() + d, v.end(), std::ostream_iterator<int>{std::cout, " "});

    return 0;
}

https://wandbox.org/permlink/mGciaeJqiH5PjGm1

...