189. Rotate Array

2018/04/09 leetcode 共 720 字,约 3 分钟

Title

the problem link

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

题目大意,把数组循环右移k个

Solution

反转

//cpp:
class Solution {
public:
	void rotate(vector<int>& nums, int k) {
		int n = nums.size();
		k = k % n;
		reverse(nums.begin(), nums.begin() + n - k);
		reverse(nums.end() - k, nums.end());
		reverse(nums.begin(), nums.end());


	}
};

也可以用额外的数组,as below

public class Solution {
    public void rotate(int[] nums, int k) {
        int[] a = new int[nums.length];
        for (int i = 0; i < nums.length; i++) {
            a[(i + k) % nums.length] = nums[i];
        }
        for (int i = 0; i < nums.length; i++) {
            nums[i] = a[i];
        }
    }
}

Search

    Table of Contents