我是靠谱客的博主 合适鸵鸟,最近开发中收集的这篇文章主要介绍给定一个数组,将数组中的元素向右移动 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)空间复杂度)的全部内容,希望文章能够帮你解决给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。(C语言,O(1)空间复杂度)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复