189 旋转数组

注意此题没有对k进行约束,因此需要在进行计算之前取余

方法一 :通过逆置实现

  1. class Solution {
  2. public void rotate(int[] nums, int k) {
  3. k = k % nums.length;
  4. reverse(nums, 0, nums.length - 1);
  5. reverse(nums, 0, k - 1);
  6. reverse(nums, k, nums.length - 1);
  7. }
  8. private void reverse(int[] nums, int start, int end) {
  9. // nums[start..end]进行原地逆置
  10. while (start < end) {
  11. int temp = nums[start];
  12. nums[start] = nums[end] ;
  13. nums[end] = temp;
  14. ++start;
  15. --end;
  16. }
  17. }
  18. }