#每日一题#
题目:数组循环左移,一个数组n个整数,不使用数组,将每个整数循环m个位置(n和m自己输入)。
输入样例:
8 3
1 2 3 4 5 6 7 8
输出样例:
4 5 6 7 8 1 2 3
解题思路:整个数组循环左移那么最前的元素必定是移动到后面的位置,当然还要考虑到当移动的位置大于元素个数的情况(可以使用%运算)。根据以上分析,首先我选择将数组元素以逆序的方式进行输入
for(int i=m-1;i>=0;i--) 判断m的具体值 m>=n时需要模余 m=m%n。
接下来就是关键的步骤了,因为逆序了,而且需要移动m位元素,最终的结果可以分为两半部分,分别进行对应部分元素的首尾交换。也就是说[n-m~n-1]区间内依次进行swap(arr[n-m],arr[n-1]),另一半区间类似操作即可。
展开
Zhou某人于2023-03-25 12:45发布的图片
评论