class Solution {
public:
void rotate(vector<int>& nums, int k) {
if( nums.empty() || (k %= nums.size()) == 0){
return;
}
int n = nums.size();
reverse(nums.begin(), nums.begin()+n-k);
reverse(nums.begin()+n-k, nums.end());
reverse(nums.begin(), nums.end());
return;
}
};
对于1234567,先旋转前n-k个数字,4321567,后旋转后k个数字,4321765,最后翻转整个数组即可,5671234。
需要注意的是对于begin的操作和翻转范围的确定。
本文介绍了一种优化的算法用于旋转数组中指定元素,并通过两次翻转操作实现目标。详细阐述了旋转前后的数组变化,以及如何通过合理选择翻转范围来达到最终排列效果。
92

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



