题解:就以示例一为例,给个数组[7,8,9,1,2,3,4,5,6];
我们可以先将这个数组反转一下得到
题目中告诉轮转k个,所以将这个数组分成两部分在进行反转。
例如输入k=3,我们用第一次反转的数组对他们前三个元素在进行反转,
得到:
再对后面的其他元素进行反转,
得到:
即这道题的正确答案。
代码如下:
void reverse(int* nums,int numsSize)
{
int *left=nums;
int *right=nums+numsSize-1;
while(left
int tmp=0;
tmp=*left;
*left=*right;
*right=tmp;
left++;
right--;
}
}
void rotate(int* nums, int numsSize, int k)
{
k %= numsSize;
if( k ==0 || numsSize == 1)
{
return;
}
reverse(nums,numsSize);
reverse(nums,k);
reverse(nums+k,numsSize-k);
}
今天的讲解到此结束,谢谢大家对浩克的支持!



