面对阳光你就不会看到阴影

题目描述:

轮转数组

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

解题代码:

1
2
3
4
5
6
7
8
9
class Solution {
public:
void rotate(vector<int>& nums, int k) {
k = k % nums.size();
reverse(nums.begin(), nums.end());
reverse(nums.begin(),nums.begin()+ k - 1);
reverse(nums.begin() + k, nums.end());
}
};

image-20230930182046224

解读与收获:

本题还是比较简单的,轮转数组,如果要轮转k个元素,首先将k的数值范围减小成k % nums.size(),这才是有效移动的位数,然后将整个数组进行翻转,再然后以下标k为分界线,分界线左边和右边分别再进行一次翻转,最终得到翻转后的数组。