标签:
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.
Related problem: Reverse Words in a String II
Credits:
Special thanks to @Freezen for adding this problem and creating all test cases.
思路:首先将数组分成两部分,先分别翻转后,再整个翻转。
public class Solution { public void rotate(int[] nums, int k) { List<Integer> tmp1 = new ArrayList<Integer>(); List<Integer> tmp2 = new ArrayList<Integer>(); int n = nums.length; k = k % n; for (int i = 0; i < n-k; i++) tmp1.add(nums[i]); for (int i = n-k; i < n; i++) tmp2.add(nums[i]); Collections.reverse(tmp1); Collections.reverse(tmp2); tmp1.addAll(tmp2); Collections.reverse(tmp1); for (int i = 0; i < n; i++) nums[i] = tmp1.get(i); } }
标签:
原文地址:http://blog.csdn.net/u011345136/article/details/45955013