首页 > 其他分享 >有 n 个整数,使前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m个数

有 n 个整数,使前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m个数

时间:2024-12-03 19:03:14浏览次数:9  
标签:arr return 前面 int 个数 brr 数组 各数

题目描述

        有 n 个整数,使前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m个数,见下图,写一个函数实现该功能。

代码实现

void Move(int* arr, int n, int m)
{
if (m <= 0 || m >= n)
return;
//创建m个长度的int数组
int* brr = (int*)malloc(m * sizeof(int));
assert(brr != NULL);
if (brr == NULL)
return;
//把后面的m个数字移到新数组
int i;
for (i = 0; i < m; i++)//n=10,m=4,
{
brr[i] = arr[n-m+i];
}
//把前面的n-m个数字后移
for (i = n - m - 1; i >= 0; i--)
{
arr[i+m] = arr[i];
}
//把新数组中的m个数组复制到arr的前面
for (i = 0; i < m; i++)
{
arr[i] = brr[i];
}
//释放新数组
free(brr);
}

void Show(const int* arr, int len)
{
for (int i = 0; i < len; i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int n = sizeof(arr) / sizeof(arr[0]);
int m = 6;
Move(arr,n,m);
Show(arr,n);
return 0;
}

总结:注意拷贝数据的方向问题.   

标签:arr,return,前面,int,个数,brr,数组,各数
From: https://blog.csdn.net/2301_78353179/article/details/144176339

相关文章

  • 数组中出现次数超过一半的数字整型数组有一个数字出现的次数超过总数的一半,请找出该
    题目描述        数组中出现次数超过一半的数字整型数组有一个数字出现的次数超过总数的一半,请找出该数字,例如长度为9的数组{1,2,3,2,4,2,5,2,2}。由于2出现的次数是5次,超过一半,所以结果为2。代码实现算法1:先排序,然后中间值就是要找的数字 intCmp......
  • SQL面试题——腾讯SQL面试题 占据好友封面个数
    腾讯SQL面试题占据好友封面个数有两个表,朋友关系表user_friend,用户步数表user_steps。朋友关系表包含两个字段,用户id,用户好友的id;用户步数表包含两个字段,用户id,用户的步数查询:占据多少个好友的封面(在好友的列表中排行第一,且必须超过好友的步数)--好友关系表+-------+-......
  • 将一个数组逆序输出。-多语言
    目录C语言实现方法1: 交换元素方法2: 使用辅助数组方法3:使用递归 方法4:使用标准库函数(C99及以上)总结Python实现方法1: 交换元素方法2:使用切片 方法3:使用reversed()函数方法4:使用list.reverse()方法方法5:使用for循环和append()......
  • 2024-12-02:划分数组得到最小的值之和。用go语言,你有两个数组,nums 和 andValues,它们的
    2024-12-02:划分数组得到最小的值之和。用go语言,你有两个数组,nums和andValues,它们的长度分别为n和m。定义数组的“值”为其最后一个元素。你的任务是将nums划分为m个不重叠的连续子数组。对于第i个子数组[li,ri],该子数组的所有元素通过按位与运算后,结果必须等......
  • 光标自动定位到起始位置 contenteditable="true" ,v-html绑定内容,div可编辑时,光标移到
    出现这个问题原因:(1)通过打断点可以看到,当你输入的时候触发input事件,提交值给父组件中的v-model;(2)但因为在子组件中又监听了v-model的值,所以整体形成了闭环;(3)还需要重点说明的是光标问题,contenteditable与v-html所在的元素值的改变如果不是通过输入而是通过赋值实现,光标就会跑到最......
  • leetcode 191. 位1的个数
    191.位1的个数给定一个正整数 n,编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中设置位的个数。1<=n<=2^32-1法一:暴力解:classSolution{public:inthammingWeight(uint32_tn){intcount=0;while(n){if(n%2==1)......
  • 有多少个数字1(前缀和版)
    有多少个数字1小明很喜欢喜欢数字1,他想研究两个整数之间所有整数出现了多少个数字1。现在他想求n次,a和b之间(包含a和b)的所有整数的1出现的次数,聪明的你能够帮帮小明吗?输入格式第一行一个整数n(1<=n<=1000000)。下面有n行,每行2个整数a和b(1<=a,b<=1000000)。输出格式......
  • 最长递增子序列的个数 - 中等难度
    *************C++TOPIC:673.最长递增子序列的个数-力扣(LeetCode)*************先看题目:中等困难,之前做的是最长递增子序列,跟这个很像,先来复习一下找一下思路://这个逻辑比较的简单//就是说我直接定义dp数组,代表第i位最长递增数列的个数//遍历每一个元素//找到最......
  • LeetCode题练习与总结:数组中两个数的最大异或值--421
    一、题目描述给你一个整数数组 nums ,返回 nums[i]XORnums[j] 的最大运算结果,其中 0≤i≤j<n 。示例1:输入:nums=[3,10,5,25,2,8]输出:28解释:最大运算结果是5XOR25=28.示例2:输入:nums=[14,70,53,83,49,91,36,80,92,51,66,70]输出:127提示:1<=......
  • 统计字符串中整数个数并分别输出数字(超级详细)
    【问题描述】输入一行字符串,不要超过80个字符,含有数字和非数字字符以及空格等,如:df23adfd562343?23dgjop535如果将其中所有连续出现的数字视为一个整数,要求统计在该字符串中共有多少个整数,并将这些数依次输出。【输入说明】只有一行,含有数字和其它任意字符。该行最长含80......