Leetcode 189 Rotate Array

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.

[show hint]

Credits:
Special thanks to @Freezen for adding this problem and creating all test cases.

 

解题思路:

几天没回来刷题结果Leetcode又出新题了。。真的是刷不完的节奏了吗。。。

我的思路是copy给的array两遍, 比如{1, 2, 3, 4, 5, 6, 7}就变成了{1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7} (跟亚麻他们家OA的那道right rotation差不多思路)

然后找到k该开始的那个点, 比如 k = 3, 就是从index = nums.length - k开始的~从那开始往后截取就行啦~~~

 

注意的是: k有可能是nums长度的各种各种倍, 比如100多倍这样子, 所以要取余~

 

 1 public void rotate(int[] nums, int k) {
 2         k = k % nums.length;
 3         int[] temp = new int[nums.length * 2];
 4         for(int i = 0; i < nums.length; i++){
 5             temp[i] = nums[i];
 6             temp[i + nums.length] = nums[i];
 7         }
 8         int res = nums.length - k;
 9         for(int i = 0; i < nums.length; i++){
10             nums[i] = temp[res];
11             res++;
12         }
13     }

 

posted @ 2015-02-25 03:52  Sherry是小太阳  阅读(274)  评论(0编辑  收藏  举报