数组循环右移
有n个整数的数组,将其循环右移m位。
如n=10,值分别为1,2,3,4,5,6,7,8,9,10
m=5 则结果为6,,7,8,9,10,1,2,3,4,5
方法1:三步翻转法
#include<stdio.h>
using namespace std;
void reverse(int * array,int left,int right)
{
while (left<right)
{
std::swap(array[left],array[right]);
left++;
right--;
}
}
void fun(int * array,int len,int m)
{
if (array == nullptr||len<=1)
{
return;
}
m = m%len;
if (m<0)
{
return;
}
reverse(array, 0, len - m - 1);
reverse(array, len-m, len - 1);
reverse(array, 0, len - 1);
}
int main()
{
int a[2]{1,2};
fun(a, 2,1);
return 0;
}