Rotate Array II

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].

Note:
Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.

 

This is same as Reverse Words in a String.  (https://leetcode.com/problems/reverse-words-in-a-string/)

 1 public class Solution {
 2     public void rotate(int[] nums, int k) {
 3         if(nums == null || nums.length == 0) return;
 4         int len = nums.length;
 5         k %= len;
 6         reverse(nums, 0, len - 1);
 7         reverse(nums, 0, k - 1);
 8         reverse(nums, k, len - 1);
 9     }
10     
11     public void reverse(int[] arr, int start, int end){
12         while(start < end){
13             int tmp = arr[start];
14             arr[start] = arr[end];
15             arr[end] = tmp;
16             start ++;
17             end --;
18         }
19     }
20 }

 

posted on 2015-03-26 11:58  Step-BY-Step  阅读(177)  评论(0编辑  收藏  举报

导航