文章目录
-
- 题目描述
- 解题思路
- 方法一:“弹幕滚动”的变式
- 方法二:巧妙三重逆序
题目描述
方法一:“以空间换时间”--放到另一个数组中去处理
这里有两种代码实现,共同思路都是后三个元素:5,6,7放到临时数组变量的前三个,再将前面的1,2,3,4,5放到后面,要注意k的值可能比数组元素个数大,所以我们要求出实际要旋转的个数,即k=k-(k/n)*n
先看第一种实现:
void rotate(int* nums, int numsSize, int k) {
int n=numsSize;
int ch[n];
int i=0,j=0;
int cnt=n-k;
if(n<k)
{
cnt=n-(k-(k/n)*n);
}
for(i=0;i<n;i++)
{
if(cnt+i<n)