思路:数组翻转法
这道题本质就是要将前 n-k 个元素 和 后 k 个元素进行调转
那么我们可以先将整个数组进行翻转,然后再分别翻转前 k 个元素和后 n-k 个元素
这里用一张图片来帮助大家更形象的理解

现有一个长度为 n 的整数数组 nums,同时给定一个非负整数 k。需要将数组中的元素整体向右进行循环轮转移动 k 次。
请你编写一个函数,对该数组进行原地修改。
约束条件:
nums 的长度 n 满足 1≤n≤105。nums[i] 满足 −231≤nums[i]≤231−1。k 满足 0≤k≤105。输入包含两个参数:一个整数数组 nums 和一个非负整数 k。其中 nums 表示待轮转的数组,k 表示向右轮转的位数。
函数没有返回值;你需要直接在原数组 nums 上进行修改,使其成为右轮转 k 个位置后的结果。
输入
6
-2 -1 0 1 2 3
2
输出
2 3 -2 -1 0 1
说明
初始数组:[−2,−1,0,1,2,3]
向右轮转 1 次:[3,−2,−1,0,1,2]
向右轮转 2 次:[2,3,−2,−1,0,1]
输入
3
1 2 3
5
输出
2 3 1
说明
初始数组:[1,2,3]
向右轮转 1 次:[3,1,2]
向右轮转 2 次:[2,3,1]
向右轮转 3 次:[1,2,3]
向右轮转 4 次:[3,1,2]
向右轮转 5 次:[2,3,1]
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册