gpt4 book ai didi

c++ - 顺时针和逆时针旋转数组的有效方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:18:30 25 4
gpt4 key购买 nike

我在 C++ 中顺时针和逆时针旋转数组或 vector 。就时间复杂度而言,哪种方法最有效?我使用了 rotate() 函数,但我想知道有没有比这更快的方法?

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
vector<int> v;
for(int i=0;i<5;i++)
v.push_back(i);
int d=2;
rotate(v.begin(),v.begin()+d,v.end());
return 0;
}

最佳答案

rotate() 是一个线性时间函数,这是您能做的最好的。

不过,如果需要做多次旋转,可以累加。

例如:4的旋转和5的旋转与9的单次旋转相同。

或者事实上,在某些应用程序中,您甚至可能不想实际旋转。

比如,如果你想按“d”旋转。你可以只创建一个函数,在请求 v[i] 时返回 v[(i+d)%v.size()]。这是恒定时间的解决方案。但正如我所说,这是特定于应用程序的。

关于c++ - 顺时针和逆时针旋转数组的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25718705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com