189.轮转数组
🔄 189.轮转数组
给定一个整数数组 nums
,将数组中的元素向右轮转 k
个位置,其中 k
是非负数。
提示:
1 <= nums.length <= 105
-231 <= nums[i] <= 231 - 1
0 <= k <= 105
思路
基本思想
考研408的题目,直接将数组逆序三遍即可,但是需要注意k>nums.size()
的情况,k==nums.size()
相当于走了一圈回到自身,没有任何变化,所以逆序之前需要做一件事,对k进行预处理,处理方式为:
$$
k=k>nums.size()?(k%nums.size()):k
$$
而不是:
$$
k=k>nums.size()?(k-nums.size()):k;
$$
因为k有可能比两个nums.size()
还要大,其余的没有要注意的地方
执行流程
- 编写逆序函数
- 预处理k
- 执行三遍逆序
代码
根据以上分析,得出以下代码:
|
|
总结
注意逆序之前k需要预处理,因为有可能k>nums.size()
并且逆序时需要传递引用,否则逆序之后的结果无法保存