循环左移(2010)

请点击这里题目描述

最优方法时间复杂度为O(n),空间复杂度O(1);

void Reverse(int R[],int from,int to) //逆置数组
{
    int i,temp; //额外空间
    for(i=0;i<(to-from+1)/2;i++)
    {
        temp=R[from+i];
        R[from+i]=R[to-1];
        R[to-i]=temp;
    }
    void Converse(int R[],int n,int p)
    {
        Reverse(R,0,p-1);// 将a逆置,
        Reverse(R,p,n-1);// 将b逆置
        Reverse(R,0,n-1); //整体取逆
    }
}

你可能感兴趣的:(杂)