1.可执行,提交时使用过大数组则超时。
void rotate(int* nums, int numsSize, int k){
int a = 0;
for(int j=0;j < k;j++)
{
a = nums[numsSize-1];
for(int i = numsSize-1;i > 0;i--)
{
nums[i] = nums[i-1];
}
nums[0] = a;
}
return;
}
2.执行出错(待解决)
void rotate(int* nums, int numsSize, int k){
static int nums_second[numsSize] = {0};
//int* nums_second = (int*)malloc(sizeof(int)*numsSize);
for(int i = 0;i < numsSize;i++)
{
nums_second[(i+3)%numsSize] = nums[i];
}
memcpy(nums[0],nums_second[0],numsSize*sizeof(int));
return;
}
3.三次交换,ok.
void rotate(int* nums, int numsSize, int k){
k = k%numsSize;
int i,j,temp = 0;
//前size = numsSize - k数组翻转;
for(i=0,j=numsSize - k -1;j>i;i++,j--)
{
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
//后size = k数组翻转;
for(i=numsSize - k,j=numsSize - 1;j>i;i++,j--)
{
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
//数组size = numsSize翻转;
for(i=0,j=numsSize - 1;j>i;i++,j--)
{
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
return;
}