P15 - 轮转数组
About 210 wordsLess than 1 minute
leetcodehot100
2025-1-11
题目
给定一个整数数组 nums
,请将数组中的元素向右轮转 k
个位置,其中 k
是非负数。
示例 1
输入:nums = [1, 2, 3, 4, 5, 6, 7]
, k = 3
输出:[5, 6, 7, 1, 2, 3, 4]
解释:
- 向右轮转 1 步:
[7, 1, 2, 3, 4, 5, 6]
- 向右轮转 2 步:
[6, 7, 1, 2, 3, 4, 5]
- 向右轮转 3 步:
[5, 6, 7, 1, 2, 3, 4]
示例 2
输入:nums = [-1, -100, 3, 99]
, k = 2
输出:[3, 99, -1, -100]
解释:
- 向右轮转 1 步:
[99, -1, -100, 3]
- 向右轮转 2 步:
[3, 99, -1, -100]
提示
1 <= nums.length <= 10^5
-2^{31} <= nums[i] <= 2^{31} - 1
0 <= k <= 10^5
实现
class Solution {
public:
void rotate(vector<int>& nums, int k) {
// 两次翻转
k %= nums.size();
reverse(nums.begin() , nums.end());
reverse(nums.begin() , nums.begin() + k); // nums.begin() + k 位置取 不到
reverse(nums.begin() + k , nums.end());
}
};