189.Rotate Array

题目链接

题目大意:与61题翻转链表有相似之处,只是一个是链表一个是数组。而数组翻转可以模拟矩阵翻转来做。

法一:将前面的数组翻转一次,后面的数组翻转一次,最后在整体翻转一次,就可以得到最后的结果。代码如下(耗时1ms):

 1     public void rotate(int[] nums, int k) {
 2         k = k % nums.length;
 3         //翻转前面的数组
 4         trueRotate(nums, 0, nums.length - k);
 5         //翻转后面的数组
 6         trueRotate(nums, nums.length - k, nums.length);
 7         //整体翻转
 8         trueRotate(nums, 0, nums.length);
 9     }
10     //翻转数组
11     public void trueRotate(int[] nums, int s, int e) {
12         int mi = (s + e) / 2;
13         for(int i = s; i < mi; i++) {
14             int tmp = nums[i];
15             nums[i] = nums[--e];
16             nums[e] = tmp;
17         }
18     }
View Code

猜你喜欢

转载自www.cnblogs.com/cing/p/9120681.html