您的位置:首页 > 编程语言 > Java开发

Leetcode:189. Rotate Array(JAVA)

2016-03-21 16:31 423 查看
【问题描述】

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]

Related problem: Reverse Words in a String II

【思路1】

三次反转,1:反转前部分,2:反转后部分,3:整个反转。

复杂度相对较高

【code】

public class Solution {
public void rotate(int[] nums, int k) {
int temp = k % nums.length;
reverse(nums, 0, nums.length - temp - 1);
reverse(nums, nums.length - temp, nums.length - 1);
reverse(nums, 0, nums.length - 1);
}

private void reverse(int[] nums, int start, int end) {
for (int i = start, j = end; i < j; i++, j--) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode java