码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode Rotate Array

时间:2016-01-21 18:28:14      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

原题链接在这里:https://leetcode.com/problems/rotate-array/

Method 1 新建一个array res, 找出rotate 后array 和 原来array 的位置对应关系是  res[i] = nums[(i+len-k) % len]. 最后把res 赋值回 nums.

Time Complexity: O(n). Space: O(n).

Method 2 每次只rotate 一个位置,一共循环k次。可以不用额外空间,但也用了更多的时间。

Time Complexity: O(k*n). Space: O(1).

Method 3 先reverse全部array, 在以k为分界点,分别reverse 前半部分[0, k-1], 后半部分[k, len-1]. 三种方法都需要注意k = k%len.

Time Complexity: O(n). Space: O(1).

AC Java:

 1 public class Solution {
 2     public void rotate(int[] nums, int k) {
 3         int len = nums.length;
 4         k = k % len;
 5         
 6         /*
 7         //Method 1, takes O(n) space, running in O(n) time
 8         
 9         int[] res = new int[len];
10         
11         for(int i = 0;i<len;i++){
12             res[i] = nums[(i+len-k)%len];
13         }
14         
15         for(int i = 0;i<len;i++){
16             nums[i] = res[i];
17         }
18          */
19         
20         /*
21         //Method 2, takes O(k*n) time
22          
23          while(k>0){
24              int temp = nums[len - 1];
25             for(int i = len-1;i>0;i--)
26             {
27                 nums[i] = nums[i-1];
28             }
29             nums[0] = temp;
30             
31             k--;
32          }
33          */
34          
35          //Method 3, reverse the whole array, cut it into two parts, reverse each of them
36          reverse(nums, 0, len-1);
37          reverse(nums, 0, k-1);
38          reverse(nums, k, len-1);
39     }
40     
41     private void reverse(int[] arr, int left, int right){
42         while(left<right){
43             int temp = arr[left];
44             arr[left] = arr[right];
45             arr[right] = temp;
46             left++;
47             right--;
48         }
49     }
50 }

 与Rotate List相似

LeetCode Rotate Array

标签:

原文地址:http://www.cnblogs.com/Dylan-Java-NYC/p/5148856.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!