经典算法——数组的循环右移K位

假设原数组序列为abcd1234,要求变换成的数组序列为1234abcd,即循环右移了4位。比较发现,其中两段的顺序是不变的,1234和abcd,可以把这两段看成两个整体。右移k位的过程就是把数组两部分交换一下,交换过程可以通过三次反转实现:


1.反转前k部分:abcd1234->dcba1234;

2.反转后面部分:dcba1234->dcba4321;

3.整体反转:dcba4321->1234abcd


经典算法——数组的循环右移K位_第1张图片


测试程序:

#include
#include
#include
using namespace std;

//经典的三次反转方法:实现数组循环右移k位
void Reverse(int* array, int p, int q)
{
	for (; p

经典算法——数组的循环右移K位_第2张图片

你可能感兴趣的:(LeetCode,C++,LeetCode算法分析)