我是靠谱客的博主 合适鸵鸟,这篇文章主要介绍给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。(C语言,O(1)空间复杂度),现在分享给大家,希望可以做个参考。

void rotate(int* nums, int numsSize, int k)
{
if (numsSize < k)//当要移动的数字长度大于数组长度
{
while (numsSize < k)
{
k = k - numsSize;
}
}
int i = 0;
int j = numsSize - 1;
for (; i < j; i++, j--)//将整个数组逆置
{
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
i = 0;
j = k - 1;
for (; i < j; i++, j--)//逆置前k个数组长度
{
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
i = k;
j = numsSize - 1;
for (; i < j; i++, j--)//逆置后numsSize-k个数组长度
{
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
}
int main()
{
int str[] = { 1,2,3,4,5,6,7,8,9 };
rotate(str, sizeof(str) / sizeof(str[0]), 5);
for (int i = 0; i < sizeof(str) / sizeof(str[0]); i++)
{
printf("%d", str[i]);
}
return 0;
}

最后

以上就是合适鸵鸟最近收集整理的关于给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。(C语言,O(1)空间复杂度)的全部内容,更多相关给定一个数组,将数组中的元素向右移动内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(101)

评论列表共有 0 条评论

立即
投稿
返回
顶部