From :
Rotate an array of n elements to the right by k steps.
For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is
rotated to [5,6,7,1,2,3,4].
class Solution {
public:
void rotate(vector<int>& nums, int k) {
if(k==0) return;
k= k % nums.size();
while(k--) {
nums.insert(nums.begin(), nums.back());
nums.pop_back();
}
}
};class Solution {
public:
void rotate(vector<int>& nums, int start, int end) {
while(start < end) {
nums[start] ^= nums[end];
nums[end] ^= nums[start];
nums[start] ^= nums[end];
++start;
--end;
}
}
void rotate(vector<int>& nums, int k) {
k = k%nums.size();
rotate(nums, 0, nums.size()-1);
rotate(nums, 0, k-1);
rotate(nums, k, nums.size()-1);
}
};public class Solution {
public void rotate(int[] nums, int k) {
int n;
if (nums == null || (n = nums.length) == 0) {
return;
}
k = k % nums.length;
rotate(nums, 0, n - 1);
rotate(nums, 0, k - 1);
rotate(nums, k, n - 1);
}
private void rotate(int[] nums, int start, int end) {
while (start < end) {
nums[start] ^= nums[end];
nums[end] ^= nums[start];
nums[start] ^= nums[end];
++start;
--end;
}
}
}
本文介绍了一种将数组元素向右旋转k步的算法实现。通过两种不同的方法实现了这一操作:一种是逐个移动元素,另一种是利用异或操作进行原地交换,避免了额外的空间消耗。
1010

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



