**Difficulty: Easy**

**Frequency: N/A**

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.

**Hint:**

Could you do it in-place with O(1) extra space?

Related problem: Reverse Words in a String II

**Test Cases:**

**Solution 1:**

**Data structure:**

**Steps:**

**Complexity:**

Runtime:

Space:

**Code:**

class Solution { public: void rotate(vector<int>& nums, int k) { int n = nums.size(); if (n <= 1) return; k = k % n; vector<int> tmp(nums.begin() + (n - k), nums.end()); for (int i = 0; i < n - k; i++) { tmp.push_back(nums[i]); } nums = tmp; } };

**Solution 2:**

**Data structure:**

**steps:**

**Complexity**:

Runtime:

Space:

**Code**:

**Submission errors:**

**Things to learn:**

Advertisements

[…] Rotate Array […]

LikeLike