
数组循环左移——使用额外数组太麻烦,三次交换直接搞定!
发布日期:2021-05-06 03:52:55
浏览次数:26
分类:技术文章
本文共 446 字,大约阅读时间需要 1 分钟。
数组循环左移
题目
答案
#include#include using namespace std;void Swap(int a[],int left ,int right){ for(int i=left;i<=(left+right)/2;i++) swap(a[i],a[left+right-i]);}int main(){ int n,m; scanf("%d %d",&n,&m); int a[n],i; for(i=0;i
PTA测试点
注意
Swap函数中的判断条件i<=(left+right)/2
里的=
要记得写
算法分析
本题只需进行三次交换就可以实现数组的循环左移
我们将题目中的m换为5,进行举例说明(其它情况同理,m>n/2也算是一种特殊情况)
8 51 2 3 4 5 6 7 8
交换过程如下(黑色数字表示不动,红色数字表示交换的数字)

就这么简单!觉得还不错的同学可以点上一个宝贵的赞,谢谢大家!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月04日 07时36分02秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!