题目:
给定一个整数数组 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]分析:
实现开头结尾前后调换即可
class Solution {
public:
void change(vector<int>&nums,int start,int end){
while(start<end){
swap(nums[start],nums[end]);
start++;
end--;
}
}
void rotate(vector<int>& nums, int k) {
k %= nums.size();
change(nums,0,nums.size()-1);
change(nums,0,k-1);
change(nums,k,nums.size()-1);
}
};
该文章介绍了一个编程问题,给定一个整数数组nums,要求将数组元素向右轮转k个位置。提供的解决方案是通过多次前后元素交换实现,首先将数组首尾元素交换,然后对首k个元素和剩余元素分别进行首尾交换。
334

被折叠的 条评论
为什么被折叠?



