1、题目描述:
LeetCode链接:https://leetcode-cn.com/problems/rotate-array/
2、解题方法:
解法1:
右旋一次,将最后一个数值保存到 temp 中,数组中其余的数依次向右移动一位,再把 temp 放到最左边。然后重复 k 次上述操作。
-
时间复杂度:O( N * (K%N) ) (右旋 k = N 次后,又回到原数组,所以取模。K%N = 0 时是最好情况 O(1),k = N - 1 时是最坏情况 O(N2) )
-
-空间复杂度:O(1)
代码如下:
void rotate(int* nums, int numsSize, int k)
{
k %= numsSize; //k对nums长度取余
int j = 0;
//右旋 k 次
for(j = 1; j <= k; j++)
{
//右旋一次
int temp = nums[numsSize-1]; //注意
int<